解決跨域問題
一、跨域問題的產生的原因
瀏覽器安全問題:瀏覽器的同源策略是瀏覽器為安全性考慮實施的非常重要的安全策略,從一個域上加載的腳本不允許訪問另外一個域的檔案屬性,當前的地址下去訪問瀏覽器上的另外一個地址不允許我們訪問瀏覽器阻止我們訪問
- 跨域:指的是從一個域名去請求另外一個域名的資源即跨域請求
- 跨域時,瀏覽器不能執行其他域名網站的腳本是由網站的同源策略造成的是瀏覽器施加的安全限制,跨域的嚴格一點就是只要協議、域名、埠有任何一個不同就被當做是跨域
二、同源策略
- 協議、域名、埠相同就是同源可以互相訪問
- 協議、域名或者埠有一個不同就是非同源 非同源不可以直接訪問


三、案例


跨域問題


四、解決跨域的幾種方法

(一)、后臺代理
PHP訪問:產生跨域的原因是瀏覽器的同源策略不能訪問,我們讓PHP訪問資源資源把訪問的結果給PHP頁面我們訪問PHP(PHP中間人)
語法:file_get_contnets('網址');



(二)、跨域資源共享(CORS)
普通跨域請求:只需要服務端設定Access—Control—Allow—Origin即可前端無需設定CORS是一個W3C標準,全稱是“跨域資源共享(Cross-origin resource-sharing)
- 它允許瀏覽器向跨源服務器發出XMLHttpRequest請求,從而克服了AJAX只能同源發送請求的限制
- 實作CORS主要在于服務器的設定關鍵在于服務器HTTP回應報文首部的設定前端部分大致還是跟原來法AJAX
請求沒什么區別只是需要對AJAX進行一些相關的設定
資源共享 設定允許哪些網站訪問這個介面
一、允許所有的網站訪問 后臺配置:請求頭
PHP:header("Access-Control-Allow-Origin:*");
二、允許部分滿足條件的網站
header("Access-Control-Allow-Origin:www.abc.com,baidu.com");
三、proxy代理
- 原理:讓代理服務器請求目標地址因為請求是在服務端進行的,在服務端不存在跨域從而解決跨域問題
- 實作:將原地址系結在代理服務器下 讓代理服務器發送請求
四、jsopn跨域
-
動態創建script標簽利用script標簽的src屬性可以任何域下的js腳本通過這個特性(也可以說是漏銅)服務器端不再回傳json格式,而是回傳一段呼叫某個函式的js代碼在src中進行了呼叫這樣就實作網路跨域
-
跨域請求:只有get請求
代碼演示





轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/293397.html
標籤:其他
