jQuery AJAX CORS 请求在 Safari 中不起作用,Chrome 在 OS X
jQuery AJAX CORS request does not work in Safari, Chrome in OS X
创建了一个简单的 jQuery Ajax 代码,它向服务于 REST API 的服务器发出 CORS 请求。在服务器中应用 CORS 过滤器,并在 Access-Control-Allow-Origin、Access-Control-Allow-Headers、Access-Control-Allow-Methods、Access-Control-Allow-Credentials 等
的过滤器映射中应用必要的更改
jQuery ajax 调用在 Chrome、Safari、IE Windows OS 中正常工作,在 iOS 中也正常工作设备。
但是相同的代码在 Safari 中不起作用,OS X 的 Chrome。当我 运行 脚本文件时,它首先发出预检 OPTION 请求,但 OPTION 请求失败说 ERR_NO_RESPONSE
。但是我在该 OPTION 请求中看不到任何响应 headers 。在wireshark中验证OPTION请求时没有向服务器发起请求。然后在 curl 命令中验证(即 curl -X OPTIONS http://myserverdomain.com
)。命令成功,正在收到响应。
无法理解为什么它在 OS X 的浏览器中不起作用。
验证浏览器设置、检查防火墙、禁用网络安全,但同样的问题仍然存在。
下面是我正在使用的 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);
});
}
此问题已通过使用命令 (sudo /opt/cisco/anyconnect/bin/websecurity_uninstall.sh) 卸载 Cisco Anyconnect VPN 客户端中的网络安全解决。因为那阻止了对服务器的 CORS ajax 请求。删除网络安全后一切似乎都正常
创建了一个简单的 jQuery Ajax 代码,它向服务于 REST API 的服务器发出 CORS 请求。在服务器中应用 CORS 过滤器,并在 Access-Control-Allow-Origin、Access-Control-Allow-Headers、Access-Control-Allow-Methods、Access-Control-Allow-Credentials 等
的过滤器映射中应用必要的更改jQuery ajax 调用在 Chrome、Safari、IE Windows OS 中正常工作,在 iOS 中也正常工作设备。
但是相同的代码在 Safari 中不起作用,OS X 的 Chrome。当我 运行 脚本文件时,它首先发出预检 OPTION 请求,但 OPTION 请求失败说 ERR_NO_RESPONSE
。但是我在该 OPTION 请求中看不到任何响应 headers 。在wireshark中验证OPTION请求时没有向服务器发起请求。然后在 curl 命令中验证(即 curl -X OPTIONS http://myserverdomain.com
)。命令成功,正在收到响应。
无法理解为什么它在 OS X 的浏览器中不起作用。 验证浏览器设置、检查防火墙、禁用网络安全,但同样的问题仍然存在。
下面是我正在使用的 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);
});
}
此问题已通过使用命令 (sudo /opt/cisco/anyconnect/bin/websecurity_uninstall.sh) 卸载 Cisco Anyconnect VPN 客户端中的网络安全解决。因为那阻止了对服务器的 CORS ajax 请求。删除网络安全后一切似乎都正常