首页 > 解决方案 > 在 context.xml 问题中设置相同站点

问题描述

我们的问题是 Chrome 和 Edge 在 iframe 中运行时无法正确呈现我们的 Java/JSP 网站。Firefox 和 IE 工作正常。

我们的研究表明这是因为 JSESSIONID cookie 需要将 SameSite 属性设置为 NONE。

通过对 context.xml 进行以下更改,我们能够在 localhost 环境中将 JSESSIONID cookie 上的 SameSite 属性设置为 NONE:

<?xml version='1.0' encoding='utf-8'?>
<Context>
        <CookieProcessor sameSiteCookies="none"/>
</Context>

但是,当我们尝试在我们的测试环境中进行测试时,它仍然无法正常工作。我们的 JSESSIONID cookie 上的 SameSite 属性未设置为 NONE。

在我们的测试环境中,我们有以下 context.xml 文件:

/opt/apache-tomcat/apache-tomcat-7.0.30/conf/context.xml
/opt/apache-tomcat/apache-tomcat-7.0.30/instances/appA/conf/context.xml
/opt/apache-tomcat/apache-tomcat-8.5.31/conf/context.xml
/opt/apache-tomcat/apache-tomcat-8.5.31/instances/AppB/conf/context.xml
/opt/apache-tomcat/apache-tomcat-9.0.21/conf/context.xml
/opt/apache-tomcat/apache-tomcat-9.0.21/instances/AppC/conf/context.xml
/opt/apache-tomcat/apache-tomcat-9.0.21/instances/OurApplication/conf/context.xml <== Has samesitecookie="none"
/opt/apache-tomcat/apache-tomcat-9.0.21/instances/OurApplication/webapps/OurApplication/META-INF/context.xml <== Has samesitecookie="none"

我们在上面的 2 个 context.xml 文件中有相同的SiteCookies="none"。我想知道它是否正在从另一个读取 CookieProcessor。有没有办法查看您在 Java 中使用的 context.xml 的哪个实例?

标签: tomcat

解决方案


same-sitecookie 属性设置为Tomcat 9.0.28None引入了,但您使用的是不支持的 9.0.21 。它在 Tomcat 8.5.48中被反向移植,但您使用的是 8.5.31,它也不支持它。None

因此,您必须更新您的 tomcat 版本。


推荐阅读