2014-04-30 3 views
4

xhr에 머리글을 추가하고 싶습니다.xhr.setRequestHeader() 내 머리글 병합

setRequestHeader를 사용할 때 실제로 수행하는 작업은 Access-Control-Request-Headers에 값을 추가하는 것입니다.

I 코드 경우 :

내가 요청 헤더에 표시되는 내용
xhr.setRequestHeader('key1', 'value1'); 
xhr.setRequestHeader('key2', 'value2'); 

은이 : 액세스 제어 - 요청 - 헤더 : 동의, 키 1 키 2가

내가 뭘 대신 볼 것으로 예상하는 것입니다 :

키 1 : 값 1

키 2 : 값 2

이 병합을 방지하려면 어떻게해야합니까? 감사합니다.

답변

5

간단한 도메인 간 XMLHttpRequest (read more about CORS here)를 사용하고 있습니다. 즉, 브라우저가 의도 한 요청보다 먼저 프리 플라이트 (OPTIONS) 요청을 보내야합니다. 이것은 다른 출처의 클라이언트가 요청을 할 수 있음을 서버와 확인하기 위해 수행됩니다. CORS 요청을 할 때 브라우저는 전송 될 때 Access-Control-Request 헤더를 요청에 자동으로 추가합니다.

Access-Control-Request-Headers 헤더는 요청에 포함 된 단순하지 않은 헤더의 쉼표로 구분 된 목록입니다. 사용자가 설정할 수있는 유일한 "간단한"헤더는 다음과 같습니다 Accept, Accept-Language, Content-Language, Last-Event-IDContent-Type (이 중 하나에 설정되어있는 경우 : application/x-www-form-urlencoded, multipart/form-data, 또는 text/plain).

서버는 프리 플라이트 요청에서 Access-Control-Request 헤더에 응답해야하며 응답에 해당 Access-Control-Allow 헤더가 있어야합니다. 따라서 귀하의 경우에는 Access-Control-Allow-Headers: key1, key2으로 응답해야합니다.