瀏覽器同源策略和跨域請求

2022-09-16 22:03:27 字數 1087 閱讀 9199

如果沒有同源策略,當你開啟銀行**,同時又開啟了另外乙個惡意**。這時,惡意**就有能力修改你這個**的dom,使你後續傳送的請求都傳送到惡意**的伺服器上,然後惡意**就能獲取到你的cookie等資訊,將會對個人的隱私財產構成巨大的威脅。

如果嚴格的遵循同源策略,也會面臨很多的問題。比如,,css,js等都得從同網域名稱**下去獲取,個人**,小**這樣是沒問題的。但是對於使用者量很大的**,顯然對伺服器的壓力將會很大,等大檔案都會占用伺服器的頻寬。

不要安全不行,不要效能也不行。在安全和效能上的考慮,使得現代瀏覽器在安全性和可用性之間選擇了乙個平衡。所以,現在的瀏覽器,對於一些資源標籤,都開了後門許可權。比如,img script style等標籤,都允許垮域引用資源,嚴格說這都是不符合同源要求的。

了解了瀏覽器的同源策略之後,可以接著談談跨域請求的問題了。因為同源策略的存在,所以跨域的ajax都是會被瀏覽器攔截下來的。我們先來看乙個例子:

這是乙個andt-pro的頁面,有個請求當前使用者的方法,然後把使用者資訊顯示在右上角。由於是前後端分離開發的,所以前端頁面在http://localhost:8000上,後端介面在http://localhost:8080上,這就是不同源了。請求的結果如下:

我在後端的介面裡也做了請求輸出:

public object currentuser()

通過上面兩個結果,可以明顯看出,請求是成功了的。但是,結果卻被瀏覽器給攔截了: *** has been blocked by cors policy: no 'access-control-allow-origin' header is present on the requested resource。

之前我寫了【快學springboot】6.webmvcconfigurer配置靜態資源和解決跨域,在這篇文章裡,我介紹了如何通過springboot的配置解決跨域問題。其實解決跨域問題有很多種方式,這裡暫時不做其他**了。有時間會再寫一篇文章來總結。

解決了跨域問題之後,重新整理之前的頁面:

請求成功,暱稱和頭像都出來了。

現在的瀏覽器,在安全和效能上做了權衡,並不是嚴格遵循同源策略的。所以,在開發web的時候,要注意防範xss攻擊等。別被利用xss漏洞,通過輸入框,給你注入了惡意的js**等。

跨域問題 瀏覽器同源策略及原因

首先,我們看到跨域這個名詞的時候,應該嘗試拆詞解字,跨 不用說了,域 是什麼?這裡的域不單單指網域名稱 域 協議 網域名稱 埠號,例 跨域問題其實就是在乙個域裡請求其他域時出現的無法請求的問題。相信做過全棧的小夥伴們,一定對此有所了解了。到底是什麼原因導致的跨域問題呢?為什麼我就不能請求其他域的資源...

瀏覽器同源策略與ajax跨域方法彙總

什麼是同源策略 要了解同源策略,首先得理解 源 在這個語境下,源 origin 其實就是指的url。所以,我們需要先理解url的組成。看看這個url 我們可以將它拆解為下面幾個部分協議 網域名稱和路徑 而對於乙個更為完整的url 而同源就是指url中protocol協議 host網域名稱 port埠...

瀏覽器同源策略,及跨域解決方案

源由下面三個部分組成 網域名稱埠 協議兩個 url 只有這三個都相同的情況下,才可以稱為同源。對比url 結果原因 不同源網域名稱不同 不同源協議不同 不同源埠不同 同源同網域名稱,同埠,同協議 瀏覽器的同源策略是一種安全功能,同源策略限制了從同乙個源載入的文件或指令碼如何與來自另乙個源的資源進行互...