2016-08-09 1 views
-1

Ember 응용 프로그램이 있는데 다음에서 '클릭'요청에 대한 삭제를 시도하고 있습니다. 구성 요소 (경로로 보냄). 서버가 사용자 인터페이스와 다른 포트에 있습니다. 그러나,다른 포트에서 Ember ajax DELETE 호출 요청한 리소스에 "No 'Access-Control-Allow-Origin'헤더가 있습니다."

  deleteAlert(alert) { 
      let self = this; 
      Ember.$.ajax({ 
       url: 'http://example.com:4320/data/alerts/' + alert.id, 
       type: 'DELETE', 
       beforeSend: function(request) 
       { 
        request.setRequestHeader("Access-Control-Allow-Origin","example.com:4301"); 
        request.setRequestHeader("Access-Control-Allow-Methods","GET,POST,OPTIONS,PATCH,DELETE,PUT"); 
       }, 
       success: function (response) { 
        if(response.status==='Success!') { 
         Ember.Logger.log(response); 
        } 
       }, 
       error: function(jqXHR, textStatus, errorThrown) { 
        Ember.Logger.error(textStatus, errorThrown, jqXHR); 
       } 
      }); 

나는 다음과 같은 오류가 점점 오전 :

은 노선에 아약스 요청입니다

XMLHttpRequest cannot load http://example.com:4320/data/alerts/252. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://example.com:4301' is therefore not allowed access. The response had HTTP status code 404. 

나는 또한 '액세스 제어에 "*"를 추가 시도 -Allow-Origin '헤더뿐만 아니라 다음과 같은 방법으로 헤더를 정의 할 수 있습니다 (beforeSend 함수 외부에서) :

  deleteAlert(alert) { 
      let self = this; 
      Ember.$.ajax({ 
       url: 'http://example.com:4320/data/alerts/' + alert.id, 
       type: 'DELETE', 
       headers: { 
        'Access-Control-Allow-Origin':'http://example.com:4301', 
        'Access-Control-Allow-Methods':'GET,POST,OPTIONS,PATCH,DELETE,PUT', 
       }, 
       success: function (response) { 
        if(response.status==='Success!') { 
         Ember.Logger.log(response); 
        } 
       }, 
       error: function(jqXHR, textStatus, errorThrown) { 
        Ember.Logger.error(textStatus, errorThrown, jqXHR); 
       } 
      }); 

같은 오류.

서버 측에서 수정해야하는 항목입니까? POST 또는 GET 요청에 문제가 없으며 지금까지는 삭제 만합니다.

도움을 주시면 감사하겠습니다.

+2

포트가 다르다는 것은 다른 출발점을 의미하기 때문에 불평합니다. 실제로 서버 측을 수정하는 데 필요한 것이므로 http://enable-cors.org/에서 리소스를 확인해보십시오. – locks

답변

0

다른 방법 (GET, POST)에 문제가 없었기 때문에 이것이 Ember의 문제라고 생각합니다. API 메소드를 POST로 변경하고 그런 방식으로 문제를 일으키지 않았습니다. 이것은 아마도 최선의 해결책이 아니며 해결 방법이 될 것입니다. Ember Data를 사용했다면 Ember가 DELETE 호출에 문제가 없을 것이라고 확신합니다.

0
request.setRequestHeader("Access-Control-Allow-Origin", "example.com:4301"); 
request.setRequestHeader("Access-Control-Allow-Methods", "GET,POST,OPTIONS,PATCH,DELETE,PUT"); 

이러한 헤더는 클라이언트 용이 아닙니다. 서버가이 헤더를 설정해야합니다.

api 서버에 이러한 권한을 추가하십시오. (example.com : 4320에서 제공)

관련 문제