2013-10-03 2 views
1

나는 HTTP 연결을 위해 jQuery.ajax을 사용하고 있습니다. 내 프로젝트에서 사용자 지정 http 헤더를 설정하고 싶지만 설정 한 메일 만 보내고 싶습니다. 현재 내 머리글을 보냈지 만 설정하지 않은 다른 머리글도 있습니다.

이것은 내가 정의 헤더를 추가 해요 방법입니다

$.ajax("http://fakedomain.foo", {headers: {header1: "value1", header2: "value2"}}); 

나는 헤더의 전체 집합을 설정하는 것은 불가능하는 경우에도 괜찮을 있지만 여분을 추가 할 수 있습니다. 그러나이 경우에도 때로는 내 헤더가 전송되기 전에 수정됩니다. 예를 들어, 내가 추가하는 경우 이러한 헤더 :

{ 
     "Connection": "close", 
     "Accept-Encoding": "deflate, gzip", 
     "Accept": "text/plain", 
    } 

그런 다음이 실제로 전송되는 것입니다은

{ 
     "Connection": "close", 
     "Accept-Encoding": "gzip,deflate,sdch", 
     "Accept": "text/plain, */*; q=0.01", 
     "Accept-Language": "es-ES,es;q=0.8", 
     "Dnt": "1", 
     "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.3", 
     ... 
    } 

당신이 할 수 (I는이를 확인하기 위해 와이어 샤크와 캡처를했다) 저기서 내 머리를 조정하고, "Accept-Encoding"헤더에 "sdch"인코딩을 추가하고, "Accept"헤더를 변경하여 */*도 허용하도록했습니다. WS가 까다로 우며 머리글을 기반으로 다른 조치를 취해야하는 경우 이는 실제 문제입니다.

그래서 정리해 : 단지 내 헤더와 별도의 사람을 보낼 수있는 방법이

  1. 있습니까?

    2. 수정할 필요없이 내 사용자 정의 헤더를 그대로 추가 할 수 있습니까?


UPDATE :
내 나쁜, 내가 제대로 헤더를 설정되지 않았습니다. (내가 올린 코드는 정확하지만 유닛 테스트에는 버그가있어서 실제로 헤더를 추가하지 않고 기본 헤더를 대신 보냈다.이 문제를 수정 한 후 헤더가 올바른 텍스트로 전송되고 있음을 알 수있다. 없이 수정. 그래서 약 2를 잊어 버려. 문제 # 1이 여전히 적용됩니다.

+1

1) 2) 아니요. 전송되는 헤더는 broswer에 따라 다르지만 모든 방법으로 수정됩니다. –

답변

2

사양 (W3C, WHATWG)를 Accept-Encoding 포함한 일부 헤더를 무시 금지.

흥미롭게도, 사양 특수 아무 말도하지 않습니다 약 Accept, 즉 브라우저가 주어진대로 사용해야 함을 의미합니다.이 경우에는 오류가있는 경우 jQuery입니다. adds that last part의 경우를 나타냅니다. si nce 6 years ago.

또한이 사양은 브라우저가 Authorization, Host, Connection, Keep-Alive 등과 같은 다른 헤더를 보내도록 요구합니다.

+0

맞습니다. 실제로 헤더가 오버라이드되지 않습니다. 내 대답을 편집 할게. –

+0

내 대답이 당신의 질문에 완전히 대답했다고 생각하십니까? 그렇지 않다면 무엇이 실종되었다고 생각합니까? – Denis

+0

죄송합니다. 제 질문을 수정하겠다는 뜻입니다.질문 # 2는 잊어 버려도되지만 사양에 대한 링크를 게시 해 주셔서 감사합니다. 남은 유일한 질문은 # 1입니다. –

관련 문제