Chrome中的AJAX發送OPTIONS而不是GET / POST / PUT / DELETE?我正在開發一個內部Web應用程序。在IE10中,請求工作正常,但在Chrome中,所有AJAX請求(有很多)都是使用OPTIONS發送的,而不是我給出的任何定義的方法。從技術上講,我的請求是“跨域”。該站點在localhost:6120上提供,我正在向AJAX請求的服務是在57124. 這個關閉的jquery錯誤定義了問題,但不是真正的修復。如何在ajax請求中使用正確的http方法?編輯:這是在每個頁面的文檔加載中:jQuery.support.cors = true;每個AJAX都是類似的:var url = 'http://localhost:57124/My/Rest/Call';$.ajax({
url: url,
dataType: "json",
data: json,
async: true,
cache: false,
timeout: 30000,
headers: { "x-li-format": "json", "X-UserName": userName },
success: function (data) {
// my success stuff
},
error: function (request, status, error) {
// my error stuff
},
type: "POST"});
3 回答

慕村225694
TA貢獻1880條經驗 獲得超4個贊
Chrome正在預檢查找CORS標頭的請求。如果請求是可接受的,它將發送實際請求。如果您正在執行此跨域,您只需處理它,或者找到一種方法來使請求成為非跨域。這就是為什么jQuery bug被關閉為不能修復的原因。這是設計的。
與簡單請求(如上所述)不同,“預檢”請求首先通過OPTIONS方法向另一個域上的資源發送HTTP請求,以便確定實際請求是否可安全發送??缯军c請求是這樣預檢的,因為它們可能對用戶數據有影響。特別是,如果出現以下情況,請求會被預檢:
它使用GET,HEAD或POST以外的方法。此外,如果POST用于發送具有除application / x-www-form-urlencoded,multipart / form-data或text / plain之外的Content-Type的請求數據,例如,如果POST請求將XML有效負載發送到服務器使用application / xml或text / xml,請求預檢。
它在請求中設置自定義標頭(例如,請求使用諸如X-PINGOTHER之類的標頭)
- 3 回答
- 0 關注
- 893 瀏覽
添加回答
舉報
0/150
提交
取消