什么是跨域?如何解決跨域問題?


1、定義:

 

跨域,指的是瀏覽器不能執行其他網站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器施加的安全限制。

那么問題來了,什么是同源策略呢?
 
同源策略: 域名,協議,端口相同。
  同一瀏覽器的兩個tab頁中分別打開來百度和谷歌的頁面
    當瀏覽器的百度tab頁執行一個腳本的時候會檢查這個腳本是屬於哪個頁面的( 即檢查是否同源,只有和百度同源的腳本才會被執行)
  如果非同源,那么在請求數據時,瀏覽器會在控制台中報一個異常,提示拒絕訪問。
    同源策略是瀏覽器的行為,是為了保護本地數據不被JavaScript代碼獲取回來的數據污染,因此攔截的是客戶端發出的請求回來的數據接收
  即請求發送了,服務器響應了,但是無法被瀏覽器接收。

 

2、例子:

 

http://www.taobao.com/index.html 調用 http://www.taobao.com/server.php (同源)

http://www.taobao.com/index.html 調用 http://www.tencent.com/server.php (taobao/tencent  跨域)主域名不同

http://www.taobao.com/index.html 調用 http://zzz.taobao.com/server.php (www/zzz  跨域)子域名不同

http://www.taobao.com:8080/index.html 調用 http://www.taobao.com:8088/server.php (8080/8088,跨域)端口不同

http://www.123.com/index.html 調用 https://www.123.com/server.php (協議不同:http/https,跨域)

請注意:localhost和127.0.0.1雖然都指向本機,但也屬於跨域。

 

3、解決辦法:

 

1、JSONP

  只支持GET請求,不支持POST請求。

2、代理

  代理模式從后台繞過瀏覽器端


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM