negrita letra example ejemplos all javascript ajax jquery http-headers

javascript - letra - ¿Cómo puedo agregar un encabezado HTTP personalizado a la solicitud ajax con js o jQuery?



jquery replace text (8)

¿Alguien sabe cómo agregar o crear un encabezado HTTP personalizado usando JavaScript o jQuery?


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.


Debe evitar el uso de $.ajaxSetup() como se describe en los docs . Use lo siguiente en su lugar:

$(document).ajaxSend(function(event, jqXHR, ajaxOptions) { jqXHR.setRequestHeader(''my-custom-header'', ''my-value''); });


Hay varias soluciones dependiendo de lo que necesites ...

Si desea agregar un encabezado personalizado (o un conjunto de encabezados) a una solicitud individual , simplemente agregue la propiedad de headers :

// 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 , use $.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 un conjunto de encabezados) a cada solicitud , use el beforeSend 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 solo puede definir un conjunto de encabezados predeterminados y solo puede definir uno antes de beforeSend . Si llama ajaxSetup varias veces, solo se enviará el último conjunto de encabezados y solo se ejecutará la última devolución de llamada antes del envío.


O, si desea enviar el encabezado personalizado para cada solicitud futura, puede usar lo siguiente:

$.ajaxSetup({ headers: { "CustomHeader": "myValue" } });

De esta manera, todas las solicitudes futuras de ajax contendrán el encabezado personalizado, a menos que las opciones de la solicitud lo invaliden explícitamente. Puedes encontrar más información sobre ajaxSetup here



Suponiendo que JQuery ajax, puede agregar encabezados personalizados como:

$.ajax({ url: url, beforeSend: function(xhr) { xhr.setRequestHeader("custom_header", "value"); }, success: function(data) { } });


Suponiendo que te refieres a "Al usar ajax" y "Un encabezado de solicitud HTTP", entonces usa la propiedad de headers en el objeto que pasas a ajax()

encabezados (añadido 1.5)

Predeterminado: {}

Un mapa de pares 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 puede sobrescribirse desde dentro de la función beforeSend.

- http://api.jquery.com/jQuery.ajax/


También puedes hacer esto sin usar jQuery. Sobrescriba 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;