cookie path路徑與domain域
實際開發中,使用cookie可能會出現一些奇怪的現象,或者能實現比較強大的功能。
或許這其中就有path和domain因素在起決定性作用,舉兩個例子:
(1).同一個站點下無法取到其他頁面的cookie。
(2).單點登入功能。
下面將以上面這兩個現象為契機,詳細介紹一下path路徑與domain域的相關知識。
一.path路徑:
同一個站點下無法讀取其他頁面的cookie,舉個例子:
在/ant/index.html頁面中寫入了一個cookie,卻無法在同一個站點下/antzone/index.html頁面中讀取。
很可能是由於/ant/index.html頁面使用預設path路徑,或者設定了一個/antzone/index.html無法讀取的路徑。
路徑設定語法如下:
[JavaScript] 純文字檢視 複製程式碼document.cookie = "name=value;path=path"
分析如下:
(1).path用來設定cookie生效的目錄,是一個絕對路徑。
(2).只有path目錄和其子目錄下的頁面可以訪問當前cookie。
(3).如果不顯式設定path,那麼預設就是當前頁面所在的目錄。
由於antzone並不是ant的子目錄,是兄弟關係,無法讀取cookie很正常。
解決方案如下:
[JavaScript] 純文字檢視 複製程式碼document.cookie = "ant=螞蟻部落;path=/"
只要將將ant目錄下的path路徑設定根目錄即可,這樣所有的頁面都可以訪問它的cookie了。
二.domain域:
再來看文章開頭提出的第二個問題,單點登入。
對於大型網站,通常會有多個分站,比如百度,就有貼吧、文庫、站長工具等。
但是你會發現,等你登入其中一個分站的賬號,你會發現所有分站都是有效的,用不著挨個登入。
這就是所謂的單點登入,使用cookie就可以比較方便的實現,那就需要用到domain。
先介紹一下一些域名的相關知識:
(1).softwhy.com是一級域名。
(2).www.softwhy.com是二級域名。
(3).data.softwhy.com是二級域名。
(4).ant.data.softwhy.com是三級域名。
以此類推,上面幾個是不同的獨立的域名,但是主域名都是softwhy.com。
通過domain屬性可以實現cookie的跨域訪問,關鍵點是主域名相同。
語法結構:
[JavaScript] 純文字檢視 複製程式碼document.cookie="name=value;domain=domain;path=path"
分析如下:
(1).domain屬性用於設定cookie生效的域。
(2).當前cookie會在設定的域和此域的子域中生效。
(3).如果使用預設值,那麼cookie只會在當前頁面所在的域生效。
(4).通常情況下,path路徑設定為根路徑/。
程式碼例項如下:
[JavaScript] 純文字檢視 複製程式碼document.cookie="ant=螞蟻部落;domain=softwhy.com;path=/"
通過上述設定,所有的softwhy.com子域名都會讀取到此cookie。
特別說明:當顯式設定domain的時候,事實上會自動在domain值前面加點(.),例如domain=softwhy.com,事實上值是.softwhy.com,那麼當前cookie對softwhy.com和其子域名都是有效的,如果使用預設值,就不會加點,那麼cookie只對當前域名有效,假設當前頁面的域名是softwhy.com,如果domain採用預設值,千萬不要誤認為當前頁面的cookie對其所有子域名也有效。
相關文章
- SVG <path> 路徑元素SVG
- Path路徑的寫法
- Cookie domain 屬性CookieAI
- linux中環境便令PATH+路徑 和 路徑 + PATH的區別Linux
- 《nginx 配置之——domain 轉 path》NginxAI
- Nodejs教程12:path(路徑)模組NodeJS
- Cookie path 屬性Cookie
- 理解Path對路徑進行操作的APIAPI
- python urllib.parse urlparse path url路徑分割Python
- SVG Path路徑在網頁開發的作用SVG網頁
- 並查集系列之「路徑壓縮( path compression ) 」並查集路徑壓縮
- canvas 路徑與子路徑Canvas
- Python科研武器庫 - 字串操作 - 路徑字串分割 os.path.split()、os.path.splitext()Python字串
- HTML絕對路徑與相對路徑HTML
- canvas路徑與子路徑詳解Canvas
- Python分享之路徑與檔案 (os.path包, glob包)Python
- 深入解析Java絕對路徑與相對路徑Java
- JavaScript cookie 跨域JavaScriptCookie跨域
- SVG之Path路徑詳解(二),全面解析貝塞爾曲線SVG
- Flutter Path(一) : Path 與 CustomPainterFlutterAI
- 64 - Minimum Path Sum 最小路徑和
- [apue] Linux / Windows 系統上只能建立不超過 PATH_MAX / MAX_PATH 長度的路徑嗎?LinuxWindows
- 數字自然資源領域的實現路徑
- Core Graphic 指南:圓弧與路徑
- 單源最短路徑(single-source shortest path )
- [BUG反饋]預設後臺用cookie記錄操作路徑然後返回,可能導致後臺路徑洩露問題Cookie
- Heterogeneous Domain Adaptation 異質域適應論文合集AIAPT
- 智慧醫院2.0時代,詳解智慧醫院建設路徑與領域組成
- Session與CookieSessionCookie
- cookie跨域共享 cookie二級域名共享 前後端分離專案共享cookieCookie跨域後端
- Linux檔案的路徑定位-相對路徑和絕對路徑Linux
- 好程式設計師web前端分享絕對路徑與相對路徑的引用程式設計師Web前端
- css檔案與資源路徑相關CSS
- 【OpenXml】Pptx的多路徑形狀轉為WPF的PathXML
- 《Node.js》path.resolve與path.join的區別與作用Node.js
- cookie Secure與HttpOnlyCookieHTTP
- Django Cookie與SessionDjangoCookieSession
- UNC路徑