servlet 如何知道浏览器禁用了 cookie?

Posted

技术标签:

【中文标题】servlet 如何知道浏览器禁用了 cookie?【英文标题】:How does the servlet know that the browser has disabled cookies? 【发布时间】:2019-11-08 18:24:36 【问题描述】:

如果有人能解释一下 servlet 如何判断客户端浏览器上的 cookie 已被禁用,我将不胜感激。

我了解在 servlet 中创建会话时: 如果启用了 cookie,服务器会将 sessionID 作为 cookie 返回。 如果 cookie 被禁用,sessionID 将被写入 URL。

我不明白服务器如何知道 cookie 已被禁用。 HTTP 是一种无状态协议,服务器无法(据我所知)告诉客户端已禁用 cookie。 我希望服务器不会在请求标头中收到 cookie,但这可能意味着一开始就没有设置任何 cookie。

我已经检查了这些答案: Servlet HttpSession cookies disabled Manage Session when broswer has disable cookies

他们都解释了如何启用 URL 重写,但没有解释服务器如何知道客户端上的 cookie 已被禁用。

【问题讨论】:

【参考方案1】:

servlet 如何判断 cookie 已被禁用

他们不能。 首次创建会话时,服务器将会话 ID 作为 cookie 和 URL 重写发送。在第二个请求中,如果它收到会话 cookie,则停止重写 URL。

【讨论】:

以上是关于servlet 如何知道浏览器禁用了 cookie?的主要内容,如果未能解决你的问题,请参考以下文章

如何检测服务器端cookie是不是被禁用

如何检测服务器端是否禁用cookie

禁用cookie后session是如何传递

IE浏览器的Cookies被禁用,如何设置允许使用

PHP中禁用cookie后session的实现

控制Ktor 0.9.0 servlet中的cookie生命周期