當前位置:
首頁 > 最新 > 跨域資源共享

跨域資源共享

面試曾經涉及到的一道題目,一年半之後機緣巧合在項目中碰到了,被折磨的很痛苦,記錄解決過程和走通的方法。

協議,域名,埠號,只要任意一個不同,就會形成跨域請求,這是因為同源策略的保護機制,防止跨站偽造請求。

比如我以172.16.xx.xx:8022訪問相同主域名下的8080埠,伺服器返回的響應就會被瀏覽器攔截。

前端:

url為絕對路徑

後端:

配置分為整個伺服器,整個後端應用,甚至個別類或方法。

項目框架為spring mvc,選擇了對整個應用進行配置,在項目的WEB-INF文件夾下的web.xml文件中,添加過濾器filter,如圖

並在本地tomcat伺服器安裝路徑的lib文件夾添加了兩個jar包,

cors-filter-1.7.jar

java-property-utils-1.9.jar

可能與開發環境有關,第一次下載兩個jar包版本都是最新版的,結果項目報錯,跑不起來,然後又重新下載了這兩個特定版本,順利跑通。

中間也試過對整個伺服器進行跨域資源共享的配置,是在本地伺服器的conf文件夾下的web.xml添加過濾器,聽說要把tomcat更新到7.0,結果更新後項目出錯,要解決的問題更多了,覺得不能南轅北轍,還是盡量少給自己挖坑,就放棄了。附上官網文檔配置,留念

https://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#CORS_Filter

中間還了解到了預請求相關概念,觀察chrome dev tools 裡面的請求type不再是get/post等,而是options,原來是瀏覽器先發送一次請求給伺服器了解是否允許跨域訪問,若允許再發送正式請求。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 寧棲野樹林 的精彩文章:

TAG:寧棲野樹林 |