如何在Java 1.4版本中为Cookie类设置samesite = none

时间:2020-01-30 18:44:20

标签: java

我正在使用wcs6版本。带有Java 1.4版本。我试图将samesite = None设置为我现有的Cookies(Cookie类)。谁可以帮我这个事。如何将此属性添加到我现有的cookie。

1 个答案:

答案 0 :(得分:0)

使用SameSite for marking cross-site cookies相对较新。在其他站点中调用API的Web应用程序未使用此标记cause a warning in Chrome 80(2020年2月)和more recent browsers。正如2018年宣布的那样,未使用此标记的网站将来会在某些时候失效。

较旧的应用程序服务器不提供在cookie中包含此标记的选项。只有较新版本的Tomcat(从8.5.42和9.0.21起)和Jetty(从9.4.21起)才提供在cookie上设置相同站点cookie属性的机制。


较旧的应用程序服务的替代方法

IBM和许多其他公司建议配置Apache或Nginx服务器来处理cookie。例如,典型的Websphere安装包括一个IBM HTTP Server(一个经过修改的Apache服务器),该服务器可以替换应用程序发布的cookie,以包含SameSite=None; Secure属性,而无需对应用程序进行任何更改。

使用IBM HTTP Server

可以将IBM HTTP Server(或任何Apache服务器)配置为use the mod_usertrack module to process the cookies。您必须在httpd.conf配置文件中包括其他行。以下是修改JSESSIONID cookie的示例。

SetEnvIf Cookie "(^|\s+|;\s+)JSESSIONID=([^;,]+)" had-usertrack=$2
Header always add Set-Cookie "JSESSIONID=%{had-usertrack}e; SameSite=None; Secure" env=had-usertrack

第一行检测到名称为JSESSIONID的cookie,并在had-usertrack变量中捕获信息。第二行设置相同cookie的值,但在末尾添加; SameSite=None; Secure

使用Apache服务器

有许多页面显示如何使用Apache解决问题(123)。他们提出了一种更简单的解决方案,无需使用用户跟踪信息即可编辑Cookie。

对于Apache 2,您可以使用以下代码将标记添加到JSESSIONID cookie中

Header edit Set-Cookie ^(JSESSIONID.*)$ $1;HttpOnly;Secure;SameSite=None

您可以使用以下命令将SameSite选项包括在所有cookie中

Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure;SameSite=None

注意::如果您在Cookie中使用SameSite=None,则也必须添加Secure。这意味着这些cookie仅在安全连接(HTTPS)上起作用。因此,(1)您必须将IBM HTTP Server或Apache Server配置为使用安全连接,并且(2)用户必须使用HTTPS协议而不是HTTP浏览应用程序。