2015-04-02 123 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後,一切似乎工作正常