我注意到对于 IE8 和 IE9,如果我使用带有POST和PUT动词的 jQuery.ajax() 调用我的 RESTful API,那么我不会在 jqXHR 中取回任何响应标头。但是,GET 请求按预期工作。
此行为与所有其他浏览器不同。我已经验证 Chrome、FF、Opera 和 Safari 在 POST 和 PUT 请求的响应中都返回了完整的预期标头集。只有 IE8 和 IE9 似乎将标题扔在地板上。(我没有检查的一件事是 HEAD 请求会发生什么。)
我已经用Fiddler验证了标头实际上是通过网络实现的,所以问题出在 jQuery 本身或 IE8 和 IE9 上。
这是一个已知的问题?如果是这样,是否有解决方法。我可以在 jQuery 中重载/覆盖某些内容以保留 POST 和 PUT 之后的标题吗?我目前的解决方法是在成功回调中使用 GET 简单地重新获取修改后的数据,因为 IE8 和 IE9 不会与GET操作的标头混淆。
这是我主要的基于 jQuery 的 AJAX 工作方法的片段:
$.ajax({
url: String.format(um.proxy.url, url),
type: ajaxParams.verb,
contentType: "application/json; charset=utf-8",
dataType: "json",
data: String.format('{0}', ajaxParams.jsonData),
headers: mapOfHeaders,
success: function (data, textStatus, jqXHR) {
//...
},
error: function (msg, textStatus, errorThrown) {
//...
}
});