什麼是跨域

什麼是跨域?

JavaScript出於安全方面的考慮,不允許跨域調用其他頁面的對象。
跨域簡單來說就是受JavaScript同源策略的限制,A網站域名下的js無法操作B網站域名下的對象。

什麼是同源策略及其限制內容?

同源策略是一種約定,它是瀏覽器最核心也最基本的安全功能,如果缺少了同源策略,瀏覽器很容易受到XSS、CSRF等攻擊。所謂同源是指"協議+域名+端口"三者相同,即便兩個不同的域名指向同一個ip地址,也非同源。
一個域名的組成是:

http://www.abc.com:8080/scripts/jquery.js
協議//子域名.主域名:端口號/請求資源地址

同源策略限制的內容有:

  • Cookie、LocalStorage、IndexedDB 等存儲性內容
  • DOM 節點
  • AJAX 請求發送後,結果被瀏覽器攔截了

但是有三個標籤允許跨域加載資源:

  • <img src=XXX>
  • <link href=XXX>
  • <script src=XXX>

跨域的幾種解決方式

  1. jsonp
    1)jsonp原理
    利用 <script> 標籤沒有跨域限制的漏洞,網頁可以得到從其他來源動態產生的 JSON 數據。JSONP請求一定需要對方的服務器做支持纔可以。

  2. cors

  3. postMessage

  4. websocket

  5. node中間件代理

  6. Nginx反向代理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章