我在Windows 7 64位上使用jQuery 1.9.1和Internet Explorer版本10.0.9200.16686,更新版本10.0.9(KB2870699)。
使用$ .ajax进行POST时,不会发送Content-Type标头。它在Chrome和其他浏览器中运行良好,我相信以前在IE10上工作正常,所以我怀疑IE10的某些更新导致了一个问题。
我也可以手动创建XMLHttpRequest并发送请求,所以我假设它必须是jQuery中的一个错误才是真正的问题?我尝试升级到1.10.2,但遇到同样的问题。
我使用$.ajaxSetup
设置了contentType:
$.ajaxSetup({
contentType: 'application/json; charset=utf-8',
context: document.body,
dataType: 'json',
accepts: 'application/json',
processdata: true,
cache: false,
crossDomain: true,
xhrFields: { withCredentials: true }
});
我也尝试将其明确设置为$.ajax
选项的一部分。
var options = {
url: basePath + 'login',
type: 'POST',
dataType: 'json',
contentType: 'application/json',
data: JSON.stringify({
UserName: username,
Password: password,
RememberMe: rememberMe || false
})
};
return $.ajax(options).then(...);
任何想法如何解决它将不胜感激。
注意:我们最初使用的是CORS,因此有xhrFields
和crossDomain
设置的原因,但由于IE8和IE9以及{{1}的问题,目前正在同一个域上托管所有内容}。