JavaScript에서 요청 헤더 설정
XMLHttpRequest를 사용하여 AJAX 호출을 할 때 JavaScript에서 대부분의 요청 헤더를 사용할 수 있습니다. Gecko 브라우저에서 request.setRequestHeader
언제 호출 해야하는지 유의해야합니다 request.open()
( http://ajaxpatterns.org/Talk:XMLHttpRequest_Call 참조 ). Referer를 사용하여 헤더 를 사용할 때 설정합니다 (Firebug 및 Tamper Data를 사용하여 전송 된 요청을 보았습니다). 사용자 에이전트를 설정 하면 AJAX 호출이 완전히 망가졌습니다. 그러나 Accept 및 Content-Type 설정 은 작동합니다. Firefox 3에서 Referer 및 User-Agent 를 찾을 수 없습니까?
var request = new XMLHttpRequest();
var path="http://www.yahoo.com";
request.onreadystatechange=state_change;
request.open("GET", path, true);
request.setRequestHeader("Referer", "http://www.google.com");
//request.setRequestHeader("User-Agent", "Mozilla/5.0");
request.setRequestHeader("Accept","text/plain");
request.setRequestHeader("Content-Type","text/plain");
request.send(null);
function state_change()
{
if (request.readyState==4)
{// 4 = "loaded"
if (request.status==200)
{// 200 = OK
// ...our code here...
alert('ok');
}
else
{
alert("Problem retrieving XML data");
}
}
}
요점 :
요청 헤더가 이미있는 경우 새 값은 분리를 위해 U + 002C COMMA 다음에 U + 0020 SPACE를 사용하여 기존 값에 연결되어야합니다.
UA는 사용자 에이전트 헤더에 초기 값을 추가 할 수 있도록 추가 할 수 있습니다.
그러나 -jQuery에서 프레임 워크 XHR을 검색 한 후에는 User-Agent 또는 Referer 헤더를 사용할 수 없습니다. 가장 가까운 것 :
// Set header so the called script knows that it's an XMLHttpRequest
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
나는 당신이 원하는 것이 FF의 보안 정책에 거부되고 있다고 의견으로 기울고 있습니다. 정의 user- Referer
유형 헤더 를 전달 하려면 항상 할 수 있습니다.
xhr.setRequestHeader('X-Alt-Referer', 'http://www.google.com');
@gnarf 대답이 맞습니다. 더 많은 정보를 추가하고 싶었습니다.
Mozilla 버그 참조 : https://bugzilla.mozilla.org/show_bug.cgi?id=627942
헤더가 다음 헤더 하나에 대해 대소 문자를 구분하지 않는 경우 단계를 종료합니다.
Accept-Charset
Accept-Encoding
Access-Control-Request-Headers
Access-Control-Request-Method
Connection
Content-Length
Cookie
Cookie2
Date
DNT
Expect
Host
Keep-Alive
Origin
Referer
TE
Trailer
Transfer-Encoding
Upgrade
User-Agent
Via
출처 : https://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html#dom-xmlhttprequest-setrequestheader
지금 이것을 찾는 사람들을 위해 :
이제 User-Agent
Firefox 43부터 헤더 설정 이 허용 된 것 같습니다 . 현재 금지 된 헤더 목록은 https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name 을 참조 하세요 .
참고 URL : https://stackoverflow.com/questions/1268673/set-a-request-header-in-javascript
'ProgramingTip' 카테고리의 다른 글
사실과 이론의 차이? (0) | 2020.12.05 |
---|---|
Angular의 빌드 및 실행 방법 (0) | 2020.12.05 |
Java 날짜 API (java.util.Date, .Calendar)가 왜 그렇게 엉망입니까? (0) | 2020.12.05 |
Zend Framework에서 레이아웃 파일을 전환하는 방법은 무엇입니까? (0) | 2020.12.05 |
Facebook은 브라우저 주소 표시 줄에서 페이지의 소스 URL을 어떻게 다시 작성합니까? (0) | 2020.12.05 |