2013-10-23 2 views
5

어쩌면 전적으로 무언가가 빠졌지 만 로컬에서 실행중인 서버가 있고 이 아닌이 $ HTTP 요청에 CORS를 사용하도록 각도로 구성되어 있습니다. localhost : <port>에 HTTP 요청을하면 Chrome이 OPTIONS 요청을 먼저 생성합니다.AngularJS CORS를 사용하지 않도록 설정 하시겠습니까?

IE 8을 지원해야하기 때문에 - AngularJS는 CORS와 함께 제대로 작동하지 않으므로 CORS를 제거해야합니다.

POST 메서드를 이 아닌으로 설정하려고 시도했지만 아무런 의미가없는 $http.post 래퍼를 사용했습니다. 아마도 이것은 https://github.com/angular/angular.js/issues/1585

과 관련이 있습니다. 컨트롤러에서 직접 jQuery 아약스 게시물을 호출하려고했습니다. CORS 옵션을 false로 설정해도 (true로 기본 설정되어 있기 때문에). 여전히 CORS 요청을 작성합니다.

구성은 어떻게됩니까?

답변

19

CORS는 귀하가 요청할 수있는 구성의 이 아니며입니다. 원본이 요청 URL protocol/domain/port와 일치하지 않으면 CORS 요청을 받게됩니다 (예외 없음).

이것은 CORS 요청이다 : http://example.com:8080/path.json (다른 하위)

이것이 CORS 요구된다 :이 http://www.example.com/path.json (다른 포트)

이다 http://www.example.com:8080의 원점 예컨대

, CORS 요청 : https://www.example.com:8080/path.json (다른 프로토콜)

이것은 입니다. CORS 요청 : http://www.example.com:8080/path.json (프로토콜, 도메인 및 포트가 모두 원점과 일치 함)

OPTIONS 요청은 표준 헤더 외부에 헤더가 있기 때문에 발생합니다 (요청에 X-Requested-With 머리글). Angular.js 1.2 이상을 위해, X는-요청-와 그 기본 공통 헤더 목록에없는

angular.module('yourModuleHere') 
    .config(function ($httpProvider) { 
     delete $httpProvider.defaults.headers.common['X-Requested-With']; 
    }); 

참고 : Angular.js, 당신은 이것을 제거 할 수 있습니다. 목록에서 제거 할 필요는 없습니다.

+2

예 - 이것은 내가 멍청한 내 문제와 일치합니다. –

관련 문제