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

2021-09-10 12:10:47 字數 1140 閱讀 4444

什麼是同源策略

要了解同源策略,首先得理解「源」。在這個語境下,源(origin)其實就是指的url。所以,我們需要先理解url的組成。看看這個url:

我們可以將它拆解為下面幾個部分協議、網域名稱和路徑:

而對於乙個更為完整的url

而同源就是指url中protocol協議、host網域名稱、port埠這三個部分完全相同,其他情況,即使是相對應的ip和網域名稱也是不同域,具體情況如下圖:

下表是各個url相對於的同源檢測結果

因此,簡單來說,同源策略就是瀏覽器出於**安全性的考慮,限制不同源之間的資源相互訪問的一種政策。

以下操作具有同源策略的限制:

值得一提的是,有些請求是不受到跨域限制。例如:websocket,script、img、iframe、video、audio標籤的src屬性等。

根據上文的內容我們可以知道,由於瀏覽器同源政策的影響,跨域的ajax請求是不被允許。那麼在實際的開發、應用中,是否有跨域ajax的場景呢?

答案是肯定的。

那麼有哪些場景會有跨域ajax的需求呢?

同源政策規定,ajax請求只能發給同源的**,否則就報錯。

除了架設伺服器**(瀏覽器請求同源伺服器,再由後者請求外部服務),有三種方法規避這個限制。

jsonp

websocket

cors

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

如果沒有同源策略,當你開啟銀行 同時又開啟了另外乙個惡意 這時,惡意 就有能力修改你這個 的dom,使你後續傳送的請求都傳送到惡意 的伺服器上,然後惡意 就能獲取到你的cookie等資訊,將會對個人的隱私財產構成巨大的威脅。如果嚴格的遵循同源策略,也會面臨很多的問題。比如,css,js等都得從同網域...

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

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

ajax跨域以及同源策略

一 同源策略 在不同的url中,如果協議 網域名稱 埠相同,那麼這些url則為同源,如果協議 網域名稱 埠其中有一項不同,與路徑不同無關,則為不同源,不同源的url傳送請求則為跨域請求。在瀏覽器中跨域採用同源策略,除非js的 的 前端框架 css的外部樣式等,可以發現這些不受同源策略的限制可以載入跨...