我有以下 jquery ajax 代码,可在除 Mac 中的 Safari 4 和 Safari 5 之外的所有其他浏览器中运行。它在 Safari 6 中可以正常工作。
$.ajax({
type : "POST",
url : crossDomainURL,
contentType : "text/plain",
data : requestData,
dataType : "text",
success : function(e) {
console.log("success");
},
error : function(e) {
console.dir(e);
console.log("FAILLLLLLLLL");
},
});
它每次都会在控制台上打印“FAILLLLLLL”语句,状态文本为错误,状态为 0。crossDomainURL 处的服务器已正确配置为处理此类请求(因此它可以正常工作)在所有其他浏览器中)。
但是对于 Mac 上的 Safari(4 和 5),ajax 调用甚至不会离开浏览器。它似乎与 CORS 问题有关,但我很困惑为什么同样的代码在 Firefox、Chrome 和 Safari 6 中可以正确工作,但在 Safari 4 和 5 中却不能。
我很欣赏任何想法。
谢谢。
编辑:旧版本的 Safari 可以在这里找到:http://michelf.ca/projects/multi-safari/
最佳答案
我将一个示例 Nodejs 应用程序与 CORS header 集放在一起,并成功地在 Safari 4 (Mac) 上完成跨域请求。
Access-Control-Allow-Origin *
Access-Control-Allow-Methods GET,PUT,POST,DELETE
Access-Control-Allow-Headers Content-Type
服务器代码可以在这里找到:https://github.com/sfarthin/cross-domain-ajax-nodejs/blob/master/server.js 并部署到 Heroku (polar-dawn-3847.herokuapp.com)。
跨域请求示例可以在这里找到: http://jsfiddle.net/78SYj/2/ (jsFiddle的界面在Safari 4中被破坏,但仍然执行ajax请求)
$.ajax({
type : "POST",
url : "http://polar-dawn-3847.herokuapp.com/",
contentType : "text/plain",
dataType : "text",
success : function(e) {
alert("success");
},
error : function(e) {
alert("FAILLLLLLLLL");
}
});
如果您分享您的服务器代码/配置,我想我们将能够找到问题。
关于javascript - 跨域 Ajax 调用在 Safari 4 和 Safari 5 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22048901/