2012-09-27 2 views
46

CORS 요청을 domain.com에서 a.domain.com으로 보내려고합니다.CORS 및 액세스 제어 허용 헤더는 어떻게 작동합니까?

Request URL: https://a.domain.com/some/route 
Request Method:OPTIONS 
Status Code:200 OK 

OPTIONS 요청 :

Access-Control-Request-Headers:origin, content-type, accept 
Access-Control-Request-Method:POST 
Host:a.domain.com 
Origin:http://domain.com:3000 
Referer:http://domain.com:3000/home 

OPTIONS 응답

내 자바 스크립트 내가 옵션의 경로과 같이 호출되는 참조 처음이

$('#fileupload').fileupload({ 
    xhrFields: { 
    withCredentials: true 
    }, 
    dataType: 'json', 
    url: $('#fileupload').data('path'), 
    singleFileUploads: true, 
    add: function(e, data){ 
    data.submit(); 
    } 
}); 

처럼 보인다

Access-Control-Allow-Credentials:true 
Access-Control-Allow-Methods:POST 
Access-Control-Allow-Origin:http://domain.com:3000 
Connection:keep-alive 
Content-Length:0 
Content-Type:text/html;charset=utf-8 

이 요청은 200과 비슷한 것으로 표시됩니다. 내 서버에서, 내가 POST 방법과 같은 경로가이 내가 OPTIONS

Request URL:https://a.domain.com/some/route 

POST 요청

Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryjwr5Pk7WBcfzMdbO 
Origin:http://domain.com:3000 
Referer:http://domain.com:3000/home 

및 취소 가져옵니다 POST 요청 이후 대가로 무엇을 얻을/실패합니다.

제 질문은 POST 컨트롤러에서도 access-control-allow-origin이 필요합니까?

쿠키에 요청시 한 번 전송 된 도메인 .domain.com이 있는데 지금은 전송되지 않고 있습니다. 그게 왜 일어날까요?

답변

65

예, OPTIONS 및 POST 응답 모두에 Access-Control-Allow-Origin: http://domain.com:3000 또는 Access-Control-Allow-Origin: * 헤더가 있어야합니다. POST 응답에도 Access-Control-Allow-Credentials: true 헤더를 포함해야합니다.

OPTIONS 응답에는 요청 된 헤더와 일치하는 헤더 Access-Control-Allow-Headers: origin, content-type, accept도 포함되어야합니다.

+1

이 프로토콜이 생략 가능을 추가하는 PHP를 사용하는 경우? 또는 http와 https 모두를 추가 할 수 있습니까? – Michael

-13

다음과 같은 라인

header (" Access -Control- Allow-Origin : *") ; 
header (" Access- Control-Allow -Headers : *") ; 

아마 문제 해결

+12

'Access-Control-Allow -Headers'는 와일드 카드를 허용하지 않습니다. 게시하기 전에 답변을 테스트하십시오. – TRiNE

+1

'Access-Control-Allow-Origin'은 신임장을 요청한 경우에도 와일드 카드를 허용하지 않습니다. – Quentin

관련 문제