12

기본 인증을 포함하는 경우 미리 채워진 HTTP 요청이 어떻게 표시됩니까? 다음 대화처럼?CORS 및 HTTP 기본 인증

OPTIONS /api/resource HTTP/1.1 
Access-Control-Request-Method: GET 
Origin: http://jsconsole.com 

서버 :

HTTP/1.1 200 OK 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Methods: POST, GET, PUT, DELETE 
Access-Control-Allow-Headers: Authorization 
Access-Control-Max-Age: 1728000 
Access-Control-Allow-Credentials: true 

클라이언트 :

임 헤더를 보낼 수 또한 불가능하기 때문에 방화범 제대로

클라이언트를 디버깅 할 곳,해야하는 이해하는 데 문제가

GET /api/resource HTTP/1.1 
Access-Control-Request-Method: GET 
Access-Control-Allow-Credentials: true 
Origin: http://jsconsole.com 

서버 :

HTTP/1.1 401 Unauthorized 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Methods: POST, GET, PUT, DELETE 
Access-Control-Allow-Headers: Authorization 
Access-Control-Max-Age: 1728000 
Access-Control-Allow-Credentials: true 
WWW-Authenticate: Basic realm="Authorisation Required" 

클라이언트 :

GET /api/resource HTTP/1.1 
Access-Control-Allow-Credentials: true 
Authorization: Basic base64encodedUserAndPassword 
Access-Control-Request-Method: GET 
Origin: http://jsconsole.com 

서버 : 당신은 자격 증명을 요청하는 경우

HTTP/1.1 200 OK 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Methods: POST, GET, PUT, DELETE 
Access-Control-Allow-Headers: Authorization 
Access-Control-Max-Age: 1728000 
Access-Control-Allow-Credentials: true 
+0

http://avalanche123.com/blog/2011/10/10/cross-domain-javascript-lessons-learned/ –

+0

에있는 기사의 중간에 약간의 기본 인증이있는 CORS 섹션을 참조하십시오. 불행히도 avalanche 블로그 항목이 오래되었습니다. Chrome은 기본 인증을 완전히 지원합니다. 그러나 IE는 보안 설정을 가지고 놀지 않는 한 그렇게하지 않습니다. – ianbeks

답변

18

다음 서버의 특정 원점 응답해야 액세스 제어 - 허용 - 원산지 응답 헤더 (따라서 와일드 카드 *를 사용할 수 없습니다. 물론 Access Control-Allow-Credentials 응답 헤더도 응답해야합니다.

+1

그리고 Access-Control-Allow-Headers는 실제로 필요하지 않습니다. FF/Chrome은 그것없이 작동합니다. 그러나 CORS의 IE 구현은 보안 설정 (도메인 간 요청 사용)을 수행하지 않는 한 기본 인증을 전혀 지원하지 않습니다. – ianbeks

+1

네, 기본적인 인증을 수행하는 방법에 따라 다릅니다. 수동으로 권한 부여 헤더를 작성하면 올바른 것입니다. 그러나 브라우저가 인증서를 제공하게하려면 허용 신임장이 필요합니다. –