JSESSIONID 是如何传递的?作为标头参数还是作为 cookie 参数?

Posted

技术标签:

【中文标题】JSESSIONID 是如何传递的?作为标头参数还是作为 cookie 参数?【英文标题】:How is JSESSIONID passed? As a header parameter or as a cookie parameter? 【发布时间】:2017-12-27 12:48:52 【问题描述】:

用户通过身份验证后,该用户的后续请求无需再次进行身份验证。这是使用 JSESSIONID 实现的。 但我不确定的是,JSESSIONID 是如何传递的?作为标头字段或 cookie 字段。或者由应用程序开发人员选择其中一种方法。

有人可以解释一下当 spring-security 用于身份验证和授权时这是如何工作的。

【问题讨论】:

一个cookie字段一个头字段。 知道了 - 它是几个可能的标题字段中的字段之一。谢谢。参考 - en.wikipedia.org/wiki/List_of_HTTP_header_fields 【参考方案1】:

JSESSIONID 对于特定用户将是相同的,除非并且直到用户会话被销毁。如果您想将相同的会话设置回用户,您可以从 HttpServletRequest 获取 JSESSIONID 并将其设置为 HttpServletResponse。这就是内部发生的事情。

每个请求都与会话相关联,您的应用程序将由具有不同会话的不同用户访问。

如果在任何情况下您的用户的浏览器丢失了 JSESSIONID,但您希望他继续使用您的应用程序,则必须进行设置。

默认情况下,JSESSIONID 存储在您的 cookie 中,这就是您清除 cookie 时将退出您已登录的所有应用程序的原因。

【讨论】:

【参考方案2】:

JSESSIONID是J2EE标准定义的cookie,与其他cookie一起在cookie HTTP Header中传递,其值遵循[cookie1]=[value1]的格式; [cookie2]=[值2]; ...

例子:

Cookie: userLocale=en; userTimezone=Europe/Berlin; JSESSIONID=DCFE1E7FB2C6BFFDD5153B7C79B9CEED; _ga=GA1.1.1774863087.1561033937

【讨论】:

【参考方案3】:

它将被发送为

Cookie:JSESSIONID=某事; customCookie=某些东西

在标题中

【讨论】:

以上是关于JSESSIONID 是如何传递的?作为标头参数还是作为 cookie 参数?的主要内容,如果未能解决你的问题,请参考以下文章

在 SOAP UI 请求中将 cookie 作为请求标头发送以获取 REST Web 服务

如何在PHP中传递SOAP标头和Body作为参数

python接口自动化-参数关联和JSESSIONID(上个接口返回数据作为下个接口请求参数)

如何使用 python 请求模块创建自定义标头

如何访问在 RMarkdown 文档中作为参数传递的文件中的数据?

PUT 参数如何传递给页面?