所謂"同源"指的是"三個相同":
1.協議相同 2.域名相同 3.端口相同
當着三個地方相同才算同源
例如:http://www.example.com:8888/dir/page.html
協議是http:// 域名是www.example.com 端口是8888
采用同源策略的目的:是為了保證用戶信息的安全,防止惡意的網站竊取數據。設想這樣一種情況:A網站是一家銀行,用戶登錄以后,又去瀏覽其他網站。
如果其他網站可以讀取A網站的 Cookie,會發生什么?如果 Cookie包含隱私(比如存款總額),這些信息就會泄漏。更可怕的是,Cookie 往往用來保存用
戶的登錄狀態,如果用戶沒有退出登錄,其他網站就可以冒充用戶,為所欲為。因為瀏覽器同時還規定,提交表單不受同源政策的限制。由此可見,"同源政
策"是必需的,否則Cookie 可以共享,互聯網就毫無安全可言了
缺點:如果不是同源
(1)Cookie、LocalStorage和IndexDB 無法讀取 (2)DOM無法獲得 (3)AJAX請求不能發送
Cookie的作用域:
Cookie有兩個很重要的屬性:Domain和Path,用來指示此Cookie的作用域:
Domain告訴瀏覽器當前要添加的Cookie的域名歸屬,如果沒有明確指明則默認為當前域名,比如通過訪問www.vinceruan.info添加的Cookie的域名默認就是www.vinceruan.info,通過訪問blog.vinceruan.info所生成的Cookie的域名就是blog.vinceruan.info
Path告訴瀏覽器當前要添加的Cookie的路徑歸屬,如果沒有明確指明則默認為當前路徑,比如通過訪問www.vinceruan.info/java/hotspot.html添加的Cookie的默認路徑就是/java/,通過blog.vinceruan.info/java/hotspot.html生成的Cookie的路徑也是/java/
瀏覽器提交的Cookie需要滿足以下兩點:
1.當前域名或者父域名下的Cookie; 2.當前路徑或父路徑下的Cookie
要滿足以上兩個條件的Cookie才會被提交,例如:
當訪問blog.vinceruan.info時
這里需要注意的是:在瀏覽器看來.
www.vinceruan.info不是blog.vinceruan.info的父域名,而vinceruan.info才是blog.vinceruan.info的父域名,
www.vinceruan.info也算是一個二級域名
這點如果你提交過域名到DNS服務器商的應該會知道,一般我們需要顯式提交www.vinceruan.info和vinceruan.info, 否則www.vinceruan.info==vinceruan.info是不成立的
所以如果我們需要在所有二級域名下共享islogin=1的Cookie,用java代碼如下:
如果要在所有的二級域名下的/java/路徑下共享silogin=1的Cookie,用java代碼如下: