文章目錄
- 問題
- 一、通過配置跨域方式
- 二、直接真實接口請求
- 三、解決方式
- 四、后端這樣做的原因
- 總結
問題
前端項目設置跨域proxy處理,接口請求不會報跨域,但是接口請求報了504,這種情況如何處理呢,后端又為何要這么做,下面我們來詳細說一說~
一、通過配置跨域方式
跨域配置如下:
無效,不報跨域,但報接口請求504:
二、直接真實接口請求
毫無疑問,會報跨域問題:
三、解決方式
(1)設置端口和后端限制的一樣,比如這里只有設置成運行端口號為3000
(2)請求頭設置和后端約束的一致,設置Content-type,和Accept類型為application/vnd.api+json
(3)再用真實接口請求,不設置跨域proxy配置,這樣就可以請求到后端數據
四、后端這樣做的原因
后端限制跨域請求,大概率是為了提高安全性和防止惡意攻擊,或保護敏感數據。但是,當端口與后端限制一致時,可以繞過跨域限制,從而允許前端應用程序請求后端數據。
總結
當然,并不是端口號一致就可以繞過跨域,還需要添加其他配置,比如前端請求需要發送帶有application/vnd.api+json頭部信息,這樣服務器就就可以將 Access-Control-Allow-Headers 設置為 application/vnd.api+json,客戶端在跨域請求中就包含這個頭部信息。同時,后端還需要設置其他跨域相關的頭部信息,如 Access-Control-Allow-Origin、Access-Control-Allow-Methods 等,服務器端的跨域配置也需要正確設置,例如在 Nginx 或 Apache 中配置跨域訪問控制。