创建了一个简单的jQuery Ajax代码,它向服务器提供CORS请求以服务REST API。在服务器中应用CORS过滤器,并在访问控制允许源,访问控制允许方法,访问控制允许证书等过滤器映射中应用必要的更改。jQuery AJAX CORS请求在Safari中不起作用,OS X中的Chrome
在Windows操作系统中,jQuery ajax调用在Chrome,Safari,IE中运行正常,并且它在iOS设备中也能正常工作。 但是,相同的代码在OS X的Safari浏览器中不起作用。当我运行脚本文件时,首先会执行预检选项请求,但OPTION请求失败,说ERR_NO_RESPONSE
。但是我看不到该OPTION请求中的任何响应头。在wireshark中验证在OPTION请求期间没有请求服务器。然后在卷曲命令中进行验证(即curl -X OPTIONS http://myserverdomain.com
)。命令是成功的,我正在得到答复。
无法理解为什么它在OS X的浏览器中不起作用。 验证浏览器设置,检查了防火墙,禁用了Web安全性,但同样的问题仍然存在。
下面是我使用jQuery的Ajax代码:
$.ajaxSetup({
contentType: "application/json; charset=utf-8",
dataType: "json",
crossDomain: true,
async:true,
xhrFields:{
withCredentials:true
},
timeout:60000
});
$.ajax({
url: "http://myserverdomain.com",
type: "POST",
data:jsonData
})
.done(function(data) {
console.log(data);
})
.fail(function(textStatus) {
console.log(textStatus);
});
}