首页 > 解决方案 > HTTPS 到 HTTP 问题

问题描述

当我通过 HTTPS 登录我的机器然后尝试通过 HTTP 登录时遇到问题。

但是,当我清除站点数据时,我可以通过 HTTP 成功登录。当我通过 HTTPS 登录时出现问题 --> 注销 --> 通过 HTTP 登录 - 除非我清除站点数据,否则我无法再次登录

从码头 4.2.24 升级到码头 9.2.25 后会观察到这种行为。

这是码头增加的安全吗?如果是这样,如何恢复这种行为?

我从https://github.com/expressjs/cookie-session#cookie-options看到了一些 cookie 选项,但是设置它也对我没有帮助。

标签: cookiesjettysession-cookies

解决方案


Jetty 4.2.24 太老了,Jetty 已经发布了 500 多个版本(是的,我数过),HTTP 规范本身更新了 4 次,Cookie 规范更新了 3 次。难怪你正在经历新的和美妙的行为。

我敢打赌,cookie 是在设置了安全标志的情况下发送的。

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:


推荐阅读