2015-04-02 39 views
0

创建了一个简单的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); 
       }); 
    }   

回答

0

此问题是由卸载思科的AnyConnect VPN客户端的Web安全与命令(解决须藤的/ opt /思科/个AnyConnect /斌/ websecurity_uninstall.sh)。因为这阻止了服务器的CORS ajax请求。删除websecurity后,一切似乎工作正常