Respuestas:
Existen varias soluciones según lo que necesite ...
Si desea agregar un encabezado personalizado (o un conjunto de encabezados) a una solicitud individual , simplemente agregue la headers
propiedad:
// Request with custom header
$.ajax({
url: 'foo/bar',
headers: { 'x-my-custom-header': 'some value' }
});
Si desea agregar un encabezado predeterminado (o un conjunto de encabezados) a cada solicitud , utilice $.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' } });
Si desea agregar un encabezado (o conjunto de encabezados) a cada solicitud , use el beforeSend
enlace con $.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' } });
Editar (más información): Una cosa a tener en cuenta es que con ajaxSetup
usted solo puede definir un conjunto de encabezados predeterminados y solo puede definir uno beforeSend
. Si llama ajaxSetup
varias veces, solo se enviará el último conjunto de encabezados y solo se ejecutará la última devolución de llamada anterior al envío.
beforeSend
devolución de llamada. Si llama $.ajaxSetup({ beforeSend: func... })
dos veces, la segunda devolución de llamada será la única que se active.
ajaxSetup
.
O, si desea enviar el encabezado personalizado para cada solicitud futura, puede utilizar lo siguiente:
$.ajaxSetup({
headers: { "CustomHeader": "myValue" }
});
De esta forma, cada solicitud ajax futura contendrá el encabezado personalizado, a menos que las opciones de la solicitud anulen explícitamente. Puedes encontrar más información ajaxSetup
aquí
Aquí hay un ejemplo usando 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++;
};
Espero que ayude.
Si crea su objeto, puede usar la función setRequestHeader para asignar un nombre y un valor antes de enviar la solicitud.
$.ajax*
funciones b / c, no dependen de jQuery y en su lugar usan XHR, por lo que esta es la única opción válida en esos casos.
También puede hacer esto sin usar jQuery. Anule el método de envío de XMLHttpRequest y agregue el encabezado allí:
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;
Debe evitar el uso $.ajaxSetup()
como se describe en los documentos . Use lo siguiente en su lugar:
$(document).ajaxSend(function(event, jqXHR, ajaxOptions) {
jqXHR.setRequestHeader('my-custom-header', 'my-value');
});
Suponiendo que quiere decir "Al usar ajax" y "Un encabezado de solicitud HTTP ", use la headers
propiedad en el objeto al que pasaajax()
encabezados (agregado 1.5)
Defecto:
{}
Un mapa de pares de clave / valor de encabezado adicionales para enviar junto con la solicitud. Esta configuración se establece antes de que se llame a la función beforeSend; por lo tanto, cualquier valor en la configuración de encabezados se puede sobrescribir desde la función beforeSend.
Se debe utilizar el método "setRequestHeader" del objeto XMLHttpRequest
Puedes usar js fetch
beforeSend
cuando hago una$.ajax
?