同源策略詳解
同源策略最初由網景公司新增到瀏覽器,當前所有的瀏覽器都支援此功能。
初始的功能是為了限制非同域網頁之間cookie的訪問,例如a.html頁面無法訪問非同域的b.html頁面的cookie。
兩個網頁同源需要滿足以下三個條件:
(1).協議相同。
(2).域名相同。
(3).埠號相同。
以網址http://www.softwhy.com/article-7813-1.html為例:
(1).http://是協議。
(2).www.softwhy.com是域名。
(3).預設是80埠,可以省略(http://www.softwhy.com:80/article-7813-1.html)。
程式碼例項:
(1).http://www.softwhy.com/article-100-1.html:同源。
(2).http://softwhy.com/article-100-1.html:域名不同,所以不同源。
(3).http://css.softwhy.example.com/article-100-1.html:域名不同,所以不同源。
(4).http://www.softwhy.com:91/article-100-1.html:埠不同,所以不同源。
(5).https://www.softwhy.com/article-100-1.html:協議不同,所以不同源。
同源策略功能:
功能是為了保護網站資訊保安,比如,一個電腦可以訪問很多網站,總不能此網站可以讀取另一個網站的資訊,尤其是涉及到重要資訊,比如使用者名稱和密碼。
隨著瀏覽器功能的增強,同源策略由最初限制cookie的訪問,發展到限制多種本地資訊:
(1).Cookie、LocalStorage 和 IndexedDB訪問限制。
(2).DOM獲取限制。
(3).AJAX請求被拒絕。
程式碼例項:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script> <script> $.ajax({ type:'get', url:'http://www.softwhy.com/demo/JSON/PHP/antzone.php' }); </script> </head> <body> <div id="thediv"></div> </body> </html>
特別說明:千萬不要在本站執行此程式碼,因為這相當於同域請求,所以不會出現任何問題。
如果在其他域執行此程式碼的時候就會出現跨域問題,截圖如下:
不受同源策略限制的情況:
有一些情況是不受同源策略的影響,簡單列舉如下:
(1).頁面中的超連結,點選可以訪問其他不同源的頁面。
(2).表單提交,不同源的頁面可以相互提交表單資料。
(3).嵌入到頁面的資源,比如引入js檔案,圖片或者CSS檔案等。
解決跨域問題:
(1).解決ajax跨域問題參閱ajax跨域解決方案一章節。
(2).iframe跨域問題參閱iframe跨域解決方案一章節。
(3).LocalStorage跨域問題參閱LocalStorage跨域解決方案一章節。
(4).cookie跨域問題參閱cookie跨域解決方案一章節。
相關文章
- Same Origin Policy 瀏覽器同源策略詳解瀏覽器
- 同源策略及其解決方案
- 同源策略
- 同源策略和跨域跨域
- 瀏覽器同源策略及 Ajax 跨域解決方案瀏覽器跨域
- 跨域?如何解決?同源策略?跨域
- 同源策略和跨域訪問跨域
- puppeteer去掉同源策略及請求攔截
- Browser Security-同源策略、偽URL的域
- 淺聊同源策略的一些基礎
- Linux 策略路由詳解Linux路由
- HDFS balance策略詳解
- 請描述你對瀏覽器同源策略的理解瀏覽器
- 前端拾遺--http-同源策略和跨域處理前端HTTP跨域
- 學習AJAX必知必會(5)~同源策略、解決跨域問題(JSONP、CORS)跨域JSONCORS
- FE.B-理解瀏覽器的同源策略與跨域方案瀏覽器跨域
- 前端中的同源策略與三種跨域資源共享方法前端跨域
- MicrosoftEdge同源策略不嚴導致任意檔案讀取測試ROS
- 深度詳解GaussDB bufferpool快取策略快取
- Sharding-JDBC分片策略詳解(二)JDBC
- 一文詳解AI模型部署策略AI模型
- Kubernetes-22:kubelet 驅逐策略詳解
- Redis詳解(十一)------ 過期刪除策略和記憶體淘汰策略Redis記憶體
- 深入理解JVM(三)——垃圾收集策略詳解JVM
- mysqlbinlog命令詳解 Part 9 MySQL備份策略MySql
- goldengate同源一目標+多表和同源多目標+多表Go
- 詳解快取更新策略及如何選擇快取
- 【經典案例】Python詳解設計模式:策略模式Python設計模式
- Python 中的設計模式詳解之:策略模式Python設計模式
- Redis(二十):Redis資料過期和淘汰策略詳解(轉)Redis
- JavaScript 複習之 同源限制JavaScript
- 提升網站效能:Nginx五種高效負載均衡策略詳解!網站Nginx負載
- 詳解GaussDB(for MySQL)服務:複製策略與可用性分析MySql
- 詳解中重度手遊在日本市場的發行策略
- DM8資料庫的密碼安全策略詳解資料庫密碼
- 同源政策與跨域請求跨域
- Android系統資源管理與電池最佳化策略詳解Android
- 從Purge機制說起,詳解GaussDB(for MySQL)的最佳化策略MySql