spring boot CrossOrigin不生效?


 

 

直接postman, curl, 瀏覽器訪問后端接口, response header是不會自動加上Access-Control-Allow-Origin的。

需要在ajax中調用,客戶端request中會加上Origin請求頭 (首先要保證發出的是跨站請求!!!),      服務器端才會加上response響應頭

 

 

 

 出現這個提示,說明chrome根本沒有發送這個請求給后端,  99%是因為ajax代碼中沒有寫http://  或者 https://

 


 

 

 

 

  出現這個提示,說明后端或者nginx可能配置了重定向 ,比如http自動跳轉https也算重定向

 

 


 

 

 

 

  出現這個提示,說明服務端沒寫相應頭 Access-Control-Allow-Origin

 


 

 

 

 瀏覽器發出請求后,服務器端才能寫響應頭

 

參考:

https://spring.io/guides/gs/rest-service-cors/

開發階段的Vue ProxyTable配置 https://segmentfault.com/a/1190000014396546

 

 Cors請求經過filter之后進入dispatcherServlet,

查找對應的handler (Controller+Method) , getHandler()中會構造HandlerExecutionChain, 並在HandlerExecutionChain中維護cors HandlerInterceptor

 

 

applyPreHandle() 中調用DefaultCorsProcessor

 

 DefaultCorsProcessor的處理過程如下:

 

 

 

 curl示例:

 

 

另外一種情況是因為在進入Controller之前 filter沒過 直接返回302跳轉了,  這時響應頭是沒有跨域字段的

 


免責聲明!

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



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