前言
最近同事詢問,有一個系統,分別裝在不同的 VM 上面,程式碼完全一樣,然而狀況卻是一個系統可正常登入,另一個則登入不進去。
查看後發現,無法登入的那個系統,Session 值都是空的。
研究
請同事用 Fiddler 錄一下各別的登入狀況後,發現在 Set-Cookie 有些許的差異,如下,
可以正常登入的系統 Set-Cookie 如下,
Set-Cookie: ASP.NET_SessionId=304t3ljikywnupq1d0pox4oe; path=/; HttpOnly
無法正常登入的系統 Set-Cookie 如下,
Set-Cookie: ASP.NET_SessionId=1op3avwog33degwqhk0ywnc0; path=/; secure; HttpOnly
它們的差異就是無法正常登入的系統,Set-Cookie 多了 secure ,
再看同事測試的網址是 http ,而設定檔中又設定「requireSSL=”true”」,所以就無法改變 Session 的值,Session 的值就是空值或是之前改過的值。
因為是測試機,所以是走 http ,所以將 coonfig 中的 requireSSL 改成 false ,就可以正常 Work 。
所以 config 中的 requireSSL 的值,請搭配 http or https 。
或都為 true ,如果沒有憑證就建立自簽憑證,然後走 https 會跟正式環境比較一致。
1 | <configuration> |
參考資料
Step-by-step Guide to create a Self Signed Certificate in IIS
Using the Microsoft Certificate Authority to get rid of those self-signed certs
SHA-256 Self Signed Certificate for Windows Server 2012 R2