ajax中出現兩次請求

2021-08-20 08:04:24 字數 892 閱讀 7386

在專案中發現ajax中出現兩次請求,options請求和get請求,得到的資料出錯,所以想要去掉options請求。

ajax請求如下:

ajaxrequestget: function (lastpath, requestparams, successfun) ,  

url : this.baseurl+lastpath,

type : "get",

data: requestparams,

success : function(data)

});

},

檢視到瀏覽器network有兩次請求,請求url一樣:

查詢原因是瀏覽器對簡單跨域請求和複雜跨域請求的處理區別。

xmlhttprequest會遵守同源策略(same-origin policy). 也即指令碼只能訪問相同協議/相同主機名/相同埠的資源, 如果要突破這個限制, 那就是所謂的跨域, 此時需要遵守cors(cross-origin resource sharing)機制。

那麼, 允許跨域, 不就是服務端設定access-control-allow-origin: *就可以了嗎? 普通的請求才是這樣子的, 除此之外, 還一種叫請求叫preflighted request。

preflighted request在傳送真正的請求前, 會先傳送乙個方法為options的預請求(preflight request), 用於試探服務端是否能接受真正的請求,如果options獲得的回應是拒絕性質的,比如404\403\500等http狀態,就會停止post、put等請求的發出。

解決的方法

AJAX中出現OPTIONS請求

之前有乙個專案使用zepto來傳送ajax請求,檢視nginx日誌或使用chrome dev tools檢視請求傳送情況時,會看到每次調後台api的請求之前,都會傳送乙個options請求,無論api要求請求的方法是get或post.為什麼會傳送這個options請求?可以去掉嗎?首先,我在js 裡...

呼叫一次AJAX,傳送兩次請求

瀏覽器對複雜跨域請求的處理,在傳送真正的請求前,會先傳送乙個方法為options的預請求 preflight request 用於試探服務端是否能接受真正的請求,如果options獲得的回應是拒絕性質的,比如404 403 500等http狀態,就會停止post put等請求的發出。有三種方式會導致...

前端 傳送請求時,同時出現兩次請求

1事故情況 在前端ajax請求資料的時候,有時候會向後台一次性傳送兩次請求,這兩次請求第一次無返回資料,第二次才會返回正確資料。2事故原因 原來對於跨域,有兩種不同的請求型別。分別為簡單跨域請求和複雜跨域請求 帶預檢的跨域請求 3複雜跨域 非簡單請求的cors請求,會在正式通訊之前,增加一次http...