基于平安的思考,须要给cookie加上Secure和HttpOnly属性,HttpOnly比拟好了解,设置HttpOnly=true的cookie不能被js获取到,无奈用document.cookie打出cookie的内容。
Secure属性是说如果一个cookie被设置了Secure=true,那么这个cookie只能用https协定发送给服务器,用http协定是不发送的。换句话说,cookie是在https的状况下创立的,而且他的Secure=true,那么之后你始终用https拜访其余的页面(比方登录之后点击其余子页面),cookie会被发送到服务器,你无需从新登录就能够跳转到其余页面。然而如果这是你把url改成http协定拜访其余页面,你就须要从新登录了,因为这个cookie不能在http协定中发送。
例子是:
前提条件:https://localhost:9102利用对cookie设置了Secure=true
- 拜访 https://localhost:9102/manager
- 输出用户名、明码,用IE或者Chrome的developer tool会看到response的header里,set-cookie的值里有Secure属性
- 登录后,持续拜访https://localhost:9102/manage...,能够失常看到内容
- 批改url,拜访http://localhost:9100/manager...,会跳转到登录页面,因为cookie在http协定下不发送给服务器,服务器要求用户从新登录
起因剖析:
服务器开启了Https时,cookie的Secure属性应设为true;
解决办法:
1.服务器配置Https SSL形式,参考:https://support.microsoft.com...
2.批改web.config,增加:
<system.web>
<httpCookies httpOnlyCookies="true" requireSSL="true" />
<system.web>