1. 程式人生 > >http你不得不知道的那些事(一)--同源策略(1)

http你不得不知道的那些事(一)--同源策略(1)

前段時間詳細的學習了一下http相關的東西,特別是看了http權威指南,感覺收穫良多,在未來的一段時間我將把自己所學到的相關東西分享出來,先撿重要的(我自認為的)來說。本章講述同源策略,希望對大家有所幫助。
基本上每個從事過網路程式設計,接觸過瀏覽器的程式設計師都知道瀏覽器的同源策略。但是深究一下就不一定有很多人知道這是個什麼東西了,只是囫圇吞棗的知道不準非同域的請求,知道部分解決方法,例如jsonp啦,帶有src的標籤啦,ducument.domain之類的東西。但是具體這個東西怎麼產生了,又是為什麼會這樣,不同源之間請求到底發生了什麼事,等等這些問題就不是那麼多人清楚了。本章會詳細分析這些問題,講述為什麼會這樣,為什麼要這樣做?做到授人以漁,當然本文純屬一家之言,參考了一些書和網路資料,甚至包含部分自行理解的,因此可能存在錯誤疏漏,殷切的希望您能幫我斧正,thx
。 講同源策略之前,還是照顧下一些初學者,把一些基本概念稍微提一下。 同源的概念:同源是指,域名,協議,埠都相同。 同源策略的概念呢?網上找了很多都沒有直接定義什麼是同源策略,只是講了同源的概念,講了同源策略能做什麼,如:同源策略(Same origin policy)是一種約定,它是瀏覽器最核心也最基本的安全功能,如果缺少了同源策略,則瀏覽器的正常功能可能都會受到影響。可以說Web是構建在同源策略基礎之上的,瀏覽器只是針對同源策略的一種實現(百度百科)。講的東西含糊不清,難以理解,我這裡就班門弄斧自己總結一下。 同源策略是指一個源的文件或者指令碼不準操作其他源的資源。 我想此時此刻的你一定會有很多問題,覺得不科學,不對,為什麼呢?我script
cdn上載入進來的jquery不是還是用的好好的,操作頁面簡直不要太順暢,現在你給我說不準操作,我首先就不同意!請看下面這句話:現代瀏覽器在安全性和可用性之間選擇了一個平衡點。在遵循同源策略的基礎上,選擇性地為同源策略開放了後門,例如img script style等標籤,都允許垮域引用資源,嚴格說這都是不符合同源要求的。什麼???瀏覽器自己搞的鬼,他們都是非主流,都是叛逆?這就要講講同源策略的來源了。 同源策略,它是由Netscape提出的一個著名的安全策略。現在所有支援JavaScript 的瀏覽器都會使用這個策略。啥意思呢?其實就是netscape提出來一個概念,然後各個瀏覽器廠商自行實現的一套東西,很明顯大家都為了方便在這個基礎上做了擴充套件,後來覺得這個擴充套件很好用,大家都接受,因此就成了預設的標準。叫什麼來著,三人成虎。但是,這些也不是完全違背同源策略,只能是引用這些資源而已,並不能讀取這些資源的內容。既做到了方便,又做到了相對的安全。不信?你可以使用ajax
重新請求一下這個資源,看行不行。很明顯請求不到吧,為什麼?下面又要放大招了,又是自己一套東西! ajax請求的資源預設是可以操作的,所以ajax必須嚴格遵守同源策略! 是的,你沒有看錯,又是我胡謅的一套東西,你心中有一萬個問題想要扔給我,最簡單一個就是,我大cors如何解釋?如何解釋?額,現在又必須講一講cors了。不過篇幅到現在為止已經很長了,我想很多看官老爺已經有點不太耐煩了,好吧,其實放了兩次大招我也有點累了。這篇就先到這裡吧,下篇接著講,thx