共计 848 个字符,预计需要花费 3 分钟才能阅读完成。
基于平安的思考,须要给 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>
正文完