同源策略又稱同源準則(same-origin policy)
(通常看書應該是不知道在說些什麼,遇到了才知道xd,我覺得這是需要經驗才知道的事...)
它的定義大概是,不同來源的script不能讀寫對方的script,(除非有明確的授權,ex:Access-Control-Allow-Origin)
這裡只寫script是因為client-side的語言不只JavaScript,還有可能有ActionScript, ECMAScript。
怎樣算是同源?
就是這樣...
所謂相同協議就是http://這種。
所謂域名就是(只是舉例) http://www.blogger.com跟http://test.blogger.com ,www跟test屬於不同域。
怎樣算是不同port呢,比方說在做網站開發時你有自己的sandbox,你的網址是http://www.wintest.com:1234而正式的developer環境是http://www.wintest.com:8080,1234跟8080屬於不同port。
舉例來說
你在你的頁面加入了Facebook的按讚功能的iframe,你想要使用google分析偵測使用者有沒有按下那個讚,這是不可能的,因為這個行為並沒有遵守同源準則,這是我以前犯的錯,我並不能存取那個facebook按讚的DOM。
http不能存取https,http跟https這兩個是不同協議。
還有更多的範例請參考wiki ,我發現wiki的例子非常不錯!。
(通常看書應該是不知道在說些什麼,遇到了才知道xd,我覺得這是需要經驗才知道的事...)
它的定義大概是,不同來源的script不能讀寫對方的script,(除非有明確的授權,ex:Access-Control-Allow-Origin)
這裡只寫script是因為client-side的語言不只JavaScript,還有可能有ActionScript, ECMAScript。
怎樣算是同源?
就是這樣...
所謂域名就是(只是舉例) http://www.blogger.com跟http://test.blogger.com ,www跟test屬於不同域。
怎樣算是不同port呢,比方說在做網站開發時你有自己的sandbox,你的網址是http://www.wintest.com:1234而正式的developer環境是http://www.wintest.com:8080,1234跟8080屬於不同port。
舉例來說
你在你的頁面加入了Facebook的按讚功能的iframe,你想要使用google分析偵測使用者有沒有按下那個讚,這是不可能的,因為這個行為並沒有遵守同源準則,這是我以前犯的錯,我並不能存取那個facebook按讚的DOM。
http不能存取https,http跟https這兩個是不同協議。
還有更多的範例請參考wiki ,我發現wiki的例子非常不錯!。
沒有留言:
張貼留言
若你看的文章,時間太久遠的問題就別問了,因為我應該也忘了... XD