cookies - HTTPS 到 HTTP 问题
问题描述
当我通过 HTTPS 登录我的机器然后尝试通过 HTTP 登录时遇到问题。
但是,当我清除站点数据时,我可以通过 HTTP 成功登录。当我通过 HTTPS 登录时出现问题 --> 注销 --> 通过 HTTP 登录 - 除非我清除站点数据,否则我无法再次登录
从码头 4.2.24 升级到码头 9.2.25 后会观察到这种行为。
这是码头增加的安全吗?如果是这样,如何恢复这种行为?
我从https://github.com/expressjs/cookie-session#cookie-options看到了一些 cookie 选项,但是设置它也对我没有帮助。
解决方案
Jetty 4.2.24 太老了,Jetty 已经发布了 500 多个版本(是的,我数过),HTTP 规范本身更新了 4 次,Cookie 规范更新了 3 次。难怪你正在经历新的和美妙的行为。
我敢打赌,cookie 是在设置了安全标志的情况下发送的。
这种行为对于仅安全的 Cookie 很常见。
在 Jetty 中,此配置可以由 WebApp 的WEB-INF/web.xml
寻找这样的东西......
<session-config>
<session-timeout>60</session-timeout>
<cookie-config>
<http-only>true</http-only>
<secure>true</secure>
</cookie-config>
<tracking-mode>COOKIE</tracking-mode>
</session-config>
注意:
http-only
设置为true
表示cookie仅用于HTTP协议(包括scheme、、、http:
和)https:
,Cookie将不被浏览器上运行的JavaScript使用。ws:
wss:
推荐阅读
- android - Android Studio 中渲染问题的原因
- android - 在 Android 中的 Post 方法中缺少授权类型
- flutter - 颤振删除列中小部件之间的空间
- ssl-certificate - NGINX 上的 SSL 证书 - 是否需要结合两个 .crt 文件?
- github - 从 Github API 获取特定的 README.md 数据
- r - min max 给出 NA 值 R dplyr
- javafx - Java FX 弹跳球开箱即用
- java - 如何收听蓝牙服务器并存储其发出的消息?
- oracle - 出现错误 29285。00000 -“文件写入错误” *原因:尝试 FFLUSH 时无法写入、刷新或关闭文件
- java - 如何用阿拉伯语值替换 HTML 模板中的文本并使用 itextpdf Jar 转换为 PDF