我怎么能添加一个自定义的HTTP头到js或jQuery的Ajax请求?

有谁知道如何使用JavaScript或jQuery添加或创build自定义HTTP标头?

有几种解决scheme取决于你需要什么…

如果你想添加一个自定义的头(或一套头)到一个单独的请求,然后只需添加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' } }); 

如果要为每个请求添加一个头文件(或一组头文件),请使用带有$.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 ,则只会发送最后一组标题,并且只会执行最后一个发送前的callback。

或者,如果您想为以后的每个请求发送自定义标题,则可以使用以下内容:

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

这种方式每个未来的Ajax请求将包含自定义标题,除非显式被请求的选项覆盖。 你可以在这里find关于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++; }; 

希望有所帮助。

如果创build对象,则可以在发送请求之前使用setRequestHeader函数分配名称和值。

假设jQuery ajax,你可以添加自定义标题,如 –

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

你也可以在不使用jQuery的情况下做到这一点。 重写XMLHttpRequest的发送方法并在其中添加标题:

 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; 

您应该避免使用$.ajaxSetup() ,如文档中所述。 请改用以下内容:

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

假设您的意思是“当使用ajax”和“一个HTTP 请求标头”,那么使用传递给ajax()的对象中的headers属性

标题(加1.5)

默认: {}

与请求一起发送的附加标题键/值对的映射。 该设置在beforeSend函数被调用之前设置; 因此,可以在beforeSend函数中覆盖标题设置中的任何值。

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

应该使用XMLHttpRequest对象的“setRequestHeader”方法

http://help.dottoro.com/ljhcrlbv.php