對於ajax跨域請求的一些相關知識

2021-09-26 21:29:38 字數 1123 閱讀 2590

響應頭部access-control-allow-origin','*',

第二個頭部貌似不重要,主要是如果是ajax請求就要設定接收的頭部

route::rule('index/upload/index','index/upload/index')->header('access-control-allow-origin','*')->header('access-control-allow-headers','x-requested-with,content-type,requesttype');
x-requested-with

x-requested-with請求頭用於在伺服器端判斷request來自ajax請求還是傳統請求。

如果 requestedwith 為 null,則為同步請求。如果 requestedwith 為 xmlhttprequest 則為 ajax 請求。

if (request.getheader("x-requested-with") != null    

&& request.getheader("x-requested-with").equalsignorecase("xmlhttprequest")) else

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

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等請求的發出。

那麼, 什麼情況下請求會變成preflighted request呢? 

ajax的跨域和非跨域請求

get請求 測試json資料 伺服器端 controller 中 responsebody public listshowdepart post請求 function fasongdata 傳入後台資料 success function data else error function 表單 con...

Ajax的Post跨域請求

同協議,同ip,同埠視為乙個域,兩個域之間互相訪問就是跨域訪問請求。根據瀏覽器的同源策略,乙個域中的指令碼只具有訪問本域資源的許可權,無法訪問其他域的資源。如果域中的ajax直接訪問另乙個域的資源就會有問題,這就是我們說的js跨域請求問題 跨域請求域有兩種常用解決方案,jsonp和cors,因為js...

ajax 請求 的一些殘念

本文是篇真正的隨筆 是我在寫乙份前端優化ppt時 想到哪寫到哪 產生的乙份 羅里吧嗦的 東東.有點懶的整理 所以就發布到這個旮旯吧.ajax 優化 一 給被請求資源設定有效的長遠的 expires 的同時設定乙個相對短 且合理的 max age值 比如 對某一檔案 伺服器的響應頭 中應該包含 exp...