【问题标题】:jQuery AJAX CORS request does not work in Safari, Chrome in OS XjQuery AJAX CORS 请求在 Safari 和 OS X 中的 Chrome 中不起作用
【发布时间】:2015-04-03 16:08:17
【问题描述】:

创建了一个简单的 jQuery Ajax 代码,该代码向服务于 REST API 的服务器发出 CORS 请求。在服务器中应用 CORS 过滤器,并对 Access-Control-Allow-Origin、Access-Control-Allow-Headers、Access-Control-Allow-Methods、Access-Control-Allow-Credentials 等的过滤器映射应用必要的更改。

jQuery ajax 调用在 Windows 操作系统的 Chrome、Safari、IE 和 iOS 设备中运行良好。 但是相同的代码在 Safari、OS X 的 Chrome 中不起作用。当我运行脚本文件时,首先它会发出一个预检 OPTION 请求,但 OPTION 请求失败说ERR_NO_RESPONSE。但是我在该 OPTION 请求中看不到任何响应标头。在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);
                });
    }        

【问题讨论】:

    标签: jquery ajax macos cors safari7


    【解决方案1】:

    通过使用命令 (sudo /opt/cisco/anyconnect/bin/websecurity_uninstall.sh) 卸载 Cisco Anyconnect VPN 客户端中的网络安全解决了这个问题。因为那阻止了对服务器的 CORS ajax 请求。删除网络安全后,一切似乎都正常

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 2018-04-20
      • 2014-10-14
      • 2012-08-29
      • 1970-01-01
      相关资源
      最近更新 更多