답변:
필요한 것에 따라 몇 가지 솔루션이 있습니다 ...
당신이 원하는 경우 개별 요청에 사용자 정의 헤더 (또는 헤더 세트)를 추가 한 후 바로 추가 headers
속성을 :
// Request with custom header
$.ajax({
url: 'foo/bar',
headers: { 'x-my-custom-header': 'some value' }
});
모든 요청에 기본 헤더 (또는 헤더 세트) 를 추가 하려면 다음을 사용하십시오 $.ajaxSetup()
.
$.ajaxSetup({
headers: { 'x-my-custom-header': 'some value' }
});
// Sends your custom header
$.ajax({ url: 'foo/bar' });
// Overwrites the default header with a new header
$.ajax({ url: 'foo/bar', headers: { 'x-some-other-header': 'some value' } });
모든 요청에 헤더 (또는 헤더 세트) 를 추가 하려면 다음 beforeSend
과 함께 후크 를 사용하십시오 $.ajaxSetup()
.
$.ajaxSetup({
beforeSend: function(xhr) {
xhr.setRequestHeader('x-my-custom-header', 'some value');
}
});
// Sends your custom header
$.ajax({ url: 'foo/bar' });
// Sends both custom headers
$.ajax({ url: 'foo/bar', headers: { 'x-some-other-header': 'some value' } });
편집 (추가 정보) : 알아야 할 한 가지는 ajaxSetup
기본 헤더 세트를 하나만 정의 할 수 있고 하나만 정의 할 수 있다는 것 beforeSend
입니다. ajaxSetup
여러 번 호출 하면 마지막 헤더 세트 만 전송되고 마지막 전송 전 콜백 만 실행됩니다.
beforeSend
콜백 은 하나만 정의 할 수 있습니다 . $.ajaxSetup({ beforeSend: func... })
두 번 전화 하면 두 번째 콜백이 유일한 콜백입니다.
ajaxSetup
.
또는 향후 모든 요청에 대해 사용자 지정 헤더를 보내려면 다음을 사용할 수 있습니다.
$.ajaxSetup({
headers: { "CustomHeader": "myValue" }
});
이렇게하면 요청 옵션에 의해 명시 적으로 재정의되지 않는 한 모든 향후 ajax 요청에 사용자 정의 헤더가 포함됩니다. 여기에서 더 많은 정보를 찾을 수 있습니다ajaxSetup
XHR2를 사용한 예는 다음과 같습니다.
function xhrToSend(){
// Attempt to creat the XHR2 object
var xhr;
try{
xhr = new XMLHttpRequest();
}catch (e){
try{
xhr = new XDomainRequest();
} catch (e){
try{
xhr = new ActiveXObject('Msxml2.XMLHTTP');
}catch (e){
try{
xhr = new ActiveXObject('Microsoft.XMLHTTP');
}catch (e){
statusField('\nYour browser is not' +
' compatible with XHR2');
}
}
}
}
xhr.open('POST', 'startStopResume.aspx', true);
xhr.setRequestHeader("chunk", numberOfBLObsSent + 1);
xhr.onreadystatechange = function (e) {
if (xhr.readyState == 4 && xhr.status == 200) {
receivedChunks++;
}
};
xhr.send(chunk);
numberOfBLObsSent++;
};
희망이 도움이됩니다.
객체를 만들면 setRequestHeader 함수를 사용하여 요청을 보내기 전에 이름과 값을 할당 할 수 있습니다.
$.ajax*
가 jQuery에 의존하지 않고 대신 XHR을 사용하는 함수를 사용 하지 않기 때문에 이것이 유일한 옵션입니다.
jQuery를 사용하지 않고이 작업을 수행 할 수도 있습니다. XMLHttpRequest의 send 메소드를 재정의하고 거기에 헤더를 추가하십시오.
XMLHttpRequest.prototype.realSend = XMLHttpRequest.prototype.send;
var newSend = function(vData) {
this.setRequestHeader('x-my-custom-header', 'some value');
this.realSend(vData);
};
XMLHttpRequest.prototype.send = newSend;
"Ajax를 사용할 때"와 "HTTP 요청 헤더" 를 의미한다고 가정 headers
하면 전달한 객체 의 속성 을 사용하십시오.ajax()
헤더 (1.5 추가)
기본:
{}
요청과 함께 보낼 추가 헤더 키 / 값 쌍의 맵입니다. 이 설정은 beforeSend 함수가 호출되기 전에 설정됩니다. 따라서 머리글 설정의 모든 값을 beforeSend 함수 내에서 덮어 쓸 수 있습니다.
XMLHttpRequest 객체의 "setRequestHeader"메소드를 사용해야합니다
js fetch를 사용할 수 있습니다
beforeSend
을 할 때$.ajax
?