近期將Chrome更新到80+版本后,出現單點登錄故障;祭出fiddler逐個請求排查后,發現有些環節的Cookie沒有正確的寫入和刪除
F12和Fiddler上都看到Cookie的屬性SameSite=None對比請求后發現可能是這里的問題;
引起的原因-代碼層面
ASP.NET雖然服務端用的Framework是4.03的包;但是對比相關的system.web.dll反編譯后,對比正常的服務器和非正常處理cookie的服務器
確實2019年12月的dll直接覆蓋的4.03里的dll;多了一個SameSite的屬性;
、
解決辦法:
實際上是4.7以后的framework支持新的Cookie標准屬性SameSite
如果老的站點無需維護可以使用臨時的方案
配置文件里加上,即可解決
<appSettings> <add key="aspnet:SuppressSameSiteNone" value="true" /> </appSettings>
如果是持續迭代的項目,可以根據實際情況迭代代碼設置相關屬性值,或者做下面的全局配置:
<system.web> <httpCookies sameSite="Strict" requireSSL="false" /> <system.web>
SameSite支持Strict、Lax、None、Unspecified從嚴格到寬松依次排序
資料
https://docs.microsoft.com/en-us/aspnet/samesite/system-web-samesite#sob