javascript - 跨域 Ajax 调用在 Safari 4 和 Safari 5 中不起作用

标签 javascript jquery safari cors

我有以下 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/

相关文章:

html - Safari 中的文本缩进,隐藏背景图像

javascript - 你将如何制作波浪动画 div css/js

jquery - CSS + Jquery如何让一个div浮在其他div内容之上

javascript - 改变除一个 Div 之外的所有元素的不透明度

javascript - Stripe 支付 : Getting Error as Customer cus_***** does not have a linked card with ID tok_*****

javascript - 通过 AJAX 从另一台服务器使用 JavaScript 上传图像

php - Ajax:跨域请求未使用 PHP 在 Safari IOS 中设置 cookie

javascript - 在javascript中实现固定位置会导致滚动时Safari中出现抖动

javascript - 需要使用正则表达式从时区字符串中删除 Offset

javascript - 可在特定的 div 内拖动