提问人:Cranialsurge 提问时间:7/16/2010 最后编辑:AstroCBCranialsurge 更新时间:7/5/2016 访问量:537846
在 jQuery AJAX GET 调用中传递请求标头
Pass request headers in a jQuery AJAX GET call
问:
我正在尝试使用 jQuery 在 AJAX GET 中传递请求标头。在以下块中,“data”自动传递查询字符串中的值。有没有办法在请求标头中传递该数据?
$.ajax({
url: "http://localhost/PlatformPortal/Buyers/Account/SignIn",
data: { signature: authHeader },
type: "GET",
success: function() { alert('Success!' + authHeader); }
});
以下操作也不起作用
$.ajax({
url: "http://localhost/PlatformPortal/Buyers/Account/SignIn",
beforeSend: { signature: authHeader },
async: false,
type: "GET",
success: function() { alert('Success!' + authHeader); }
});
答:
325赞
Adam
7/16/2010
#1
用: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); }
});
http://api.jquery.com/jQuery.ajax/
http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader-method
评论
4赞
matthew_360
1/19/2013
我知道这已经是超级老了。但我想补充一点,后面应该有一个逗号: beforeSend: function(xhr){xhr.setRequestHeader('X-Test-Header', 'test-value');}
0赞
user1940268
1/31/2015
beforeSend: function(xhr){xhr.setRequestHeader('X-Test-Header', 'test-value');} 在 chrome 和 firefox 中运行良好,但在 IE8 中无法运行。没有 X-Test-Header 发送。如何解决?感谢
0赞
Ghanshyam Baravaliya
5/6/2016
我已经尝试过,但是当我使用“jquery-1.11.1.min.js”传递标题详细信息时会抛出错误
4赞
thedanotto
9/27/2016
请参阅下面的答案,更相关
0赞
Si8
2/2/2017
如果我想添加 和 ?X-Test-Header
X-Test-Header
beforeSend
448赞
Lukas
9/11/2012
#2
从 jQuery 1.5 开始,您可以按如下方式传入哈希值:headers
$.ajax({
url: "/test",
headers: {"X-Test-Header": "test-value"}
});
从 http://api.jquery.com/jQuery.ajax:
标头(添加了 1.5):要与请求一起发送的其他标头键/值对的映射。此设置是在调用 beforeSend 函数之前设置的;因此,标头设置中的任何值都可以从 beforeSend 函数中覆盖。
评论
83赞
Lukas
1/26/2013
是的:$.ajaxSetup({headers: {"X-Test-Header": "test-value"}})
6赞
Glen Selle
6/10/2014
jQuery 文档不建议再使用 $.ajaxSetup() (api.jquery.com/jQuery.ajaxSetup)
2赞
MiniRagnarok
10/14/2014
@Glen 他们的理由是插件可能期望默认设置正常工作。就我个人而言,我认为这是给定的,如果您全局更改某些内容,则取决于默认设置的内容可能不起作用。
1赞
Erik Philips
6/10/2016
@Trip 我对全球的建议...为 AJAX 调用(抽象)编写自己的包装器,而不是调用 $.ajax()。
1赞
Lukas
3/28/2019
标头中不允许@Rishav JSON 对象。您必须对其进行 JSON.stringize 化,然后在服务器上解析它。
57赞
enthusiast
7/5/2016
#3
$.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) {
}
});
评论
0赞
Jeb50
4/16/2017
使用 jQuery 1.7.2、C# API 2.x,当尝试从标头中提取错误时,因为找不到给定的标头。 因为 r.Headers 是空的。HttpRequestMessage r = new HttpRequestMessage(); int mylogonID = Convert.ToInt32(r.Headers.GetValues("logonID"));
0赞
enthusiast
4/17/2017
您可能想尝试类似 - string[] ids = System.Web.HttpContext.Current.Request.Headers[“logonID”] 的东西。分裂(',');
0赞
tree
10/9/2020
dataType 应写为 ad datatype
评论