在jQuery AJAX GET调用中传递请求标头

Cra*_*rge 233 ajax jquery client-side

我试图使用jQuery在AJAX GET中传递请求标头.在下面的块中,"data"会自动传递查询字符串中的值.有没有办法在请求标头中传递该数据?

$.ajax({
         url: "http://localhost/PlatformPortal/Buyers/Account/SignIn",
         data: { signature: authHeader },
         type: "GET",
         success: function() { alert('Success!' + authHeader); }
      });
Run Code Online (Sandbox Code Playgroud)

以下也不起作用

$.ajax({
         url: "http://localhost/PlatformPortal/Buyers/Account/SignIn",
         beforeSend: { signature: authHeader },
         async: false,                    
         type: "GET",
                    success: function() { alert('Success!' + authHeader); }
      });
Run Code Online (Sandbox Code Playgroud)

Luk*_*kas 377

从jQuery 1.5开始,headers您可以传递一个哈希,如下所示:

$.ajax({
    url: "/test",
    headers: {"X-Test-Header": "test-value"}
});
Run Code Online (Sandbox Code Playgroud)

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

headers(已添加1.5):要与请求一起发送的其他标头键/值对的映射.在调用beforeSend函数之前设置此设置; 因此,可以从beforeSend函数中覆盖标题设置中的任何值.

  • 是:`$ .ajaxSetup({headers:{"X-Test-Header":"test-value"}}) (74认同)
  • 这可以全球设定吗? (6认同)
  • jQuery文档不建议再使用$ .ajaxSetup()(http://api.jquery.com/jQuery.ajaxSetup/) (6认同)
  • @Glen他们的理由是插件可能期望默认设置起作用.就个人而言,我认为如果你全局改变某些东西,那么取决于默认设置的东西可能不起作用. (2认同)

Ada*_*dam 273

用途beforeSend:

$.ajax({
         url: "http://localhost/PlatformPortal/Buyers/Account/SignIn",
         data: { signature: authHeader },
         type: "GET",
         beforeSend: function(xhr){xhr.setRequestHeader('X-Test-Header', 'test-value');},
         success: function() { alert('Success!' + authHeader); }
      });
Run Code Online (Sandbox Code Playgroud)

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

http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader-method

  • 我知道现在已经超级老了.但是我想补充说之后应该有一个逗号:beforeSend:function(xhr){xhr.setRequestHeader('X-Test-Header','test-value');} (4认同)
  • 看下面的答案,更相关 (3认同)

ent*_*ast 38

$.ajax({
            url: URL,
            type: 'GET',
            dataType: 'json',
            headers: {
                'header1': 'value1',
                'header2': 'value2'
            },
            contentType: 'application/json; charset=utf-8',
            success: function (result) {
               // CallBack(result);
            },
            error: function (error) {
                
            }
        });
Run Code Online (Sandbox Code Playgroud)