跨域時發送預檢請求,tp5的restful無options方法的解決方案


解決 跨域問題解決

問題:使用vue-resource發送delete請求時報options請求404

思考:明明發送的是delete請求,為何變成了options請求? 

答:跨域情況下,PUT,DELETE或者是Content Type是application/json,均為“不是那么簡單的請求”。針對這種請求,瀏覽器會在真實請求前,額外發起一次類型為OPTIONS的請求(Preflight request),只有服務器正確響應了OPTIONS請求后,瀏覽器才會發起該請求。而tp5沒有定義options請求的路由,所以報了404錯誤。 

解決方案:在tp5中定義一個路由規則,限定options方式請求, 

Route::rule('xxx','xxx/delete','OPTIONS'); 

然后在控制器方法中在返回頭中定義可訪問的方式: 

header('Access-Control-Allow-Methods:POST, GET, PUT, DELETE, OPTIONS');

這樣就可以騙過瀏覽器的預檢了。 

另:跨域的Apache和Nginx配置就不貼了。vue-resource的content-type設置這里也不貼。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM