【发布时间】:2017-05-16 03:14:54
【问题描述】:
我一直在四处寻找,但我找不到明确的答案。
我需要能够执行 AJAX POST 并发送自定义标头。我可以完全控制客户端脚本和服务器端服务,所以如果我必须对任何一方进行任何调整以使其正常工作,我都可以进行这些更改。
我目前正在使用 jQuery,但是如果 jQuery 无法做到这一点,我需要使用另一个完全没有问题的库。理想情况下,我宁愿坚持使用单个库 (jQuery),但如果它解决了我的问题,我非常乐意使用第二个。
目前我的代码如下所示:
$.ajax({
type: 'POST',
url: 'http://localhost:65079/TestHandler',
crossDomain: true,
data: myVariableOfData,
dataType: 'json',
beforeSend: function(xhr) {
xhr.setRequestHeader('MessageId', 'abc123');
},
success: function(responseData, textStatus, messageId) {
console.log("success");
},
error: function(responseData, textStatus, errorThrown) {
console.log(textStatus);
console.log(responseData);
console.log(errorThrown);
}
});
不幸的是,jQuery 甚至没有尝试将请求发送到服务器,但是一旦我删除了标头,它就会发送请求。不过,我真的需要这些标题,因此我们将不胜感激。
请向我提出任何可能有助于解决此问题的问题,我会尽快回复。
【问题讨论】:
-
Afaik jQuery 拒绝在跨域请求上设置标头,因为并非所有浏览器都兼容 - 如果 IE 不支持某个功能,jQuery 通常会禁用它
-
@Bergi 正如我所提到的,我不需要坚持使用 jQuery,我需要支持的唯一浏览器是当前的堆栈(IE9+、最新的 Chrome 和最新的 Firefox) - 你知道我该怎么做吗?不用 jQuery 也能解决这个问题?
-
你能在
TestHandler分享你的标题吗? -
如果你的意思是我在网络服务上的代码,那么看看这里的 Global.asax.cs 代码:dotnet-tricks.com/Tutorial/wcf/… - 这就是我的(但我没有做WCF)
标签: javascript jquery ajax cross-domain