網站部署後,網址列出現類似下列亂碼片段:
https://www.example.com/(S(jnzpixfqi5rge5rnl45vdb45))/Default.aspx
這段 (S(xxxxxxxxx)) 是 Session ID 嵌入 URL 的標誌,而非真正的亂碼。
<sessionState mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="true" <-- 罪魁禍首
timeout="20" />
Set-Cookie: ASP.NET_SessionId=xxx 寫入瀏覽器 Cookie/(S(xxx))/cookieless="true" 以支援不接受 Cookie 的舊裝置 (WAP 手機、特定嵌入式瀏覽器)<sessionState mode="InProc"
cookieless="false" <-- 改為 false (或 "UseCookies")
timeout="20" />
立即生效,無需重新編譯,只需回收應用程式集區或修改 web.config 觸發應用程式重啟。
| 值 | 行為 | 適用場景 |
|---|---|---|
true / UseUri | 強制嵌入 URL,完全不使用 Cookie | 極舊裝置、特定安全需求 (極少見) |
false / UseCookies | 強制使用 Cookie,不嵌入 URL | 現代 Web 標準、99% 專案 |
AutoDetect | 偵測瀏覽器是否支援 Cookie,支援則用 Cookie,否則用 URL | 需支援極舊瀏覽器的混合環境 |
UseDeviceProfile | 根據 <browserCaps> 設定檔決定 (預設值) | 依賴瀏覽器定義檔,現代瀏覽器皆為 UseCookies |
修改設定後,舊的 URL 嵌入式 Session ID 將無法辨識,使用者需重新登入。建議在維護時段部署。
極少數拒絕 Cookie 的爬蟲、API 客戶端、嵌入式 WebView 將無法維持 Session。若有此需求,需改用 AutoDetect 或實作 Token 型驗證 (JWT)。
HttpOnly、Secure、SameSite 屬性防禦 XSS/CSRF(S(xxx))Set-Cookie: ASP.NET_SessionId=... 正常送出網址出現 (S(xxx)) 亂碼,100% 為 cookieless="true" 導致。修改 web.config 設定 cookieless="false" (或 UseCookies) 即可徹底解決。現代 Web 開發應一律使用 Cookie 型 Session,兼具安全性、SEO 友善與使用者體驗。