創建了一個簡單的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);
});
}