tomcat - 在 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 的哪个实例?
解决方案
将same-site
cookie 属性设置为Tomcat 9.0.28None
中引入了,但您使用的是不支持的 9.0.21 。它在 Tomcat 8.5.48中被反向移植,但您使用的是 8.5.31,它也不支持它。None
因此,您必须更新您的 tomcat 版本。
推荐阅读
- javascript - 如何在 vue2-editor 中从 url 加载图像
- command-line-interface - 在 Windows 上的 Sphinx 中使用 mermaid.cli 的问题
- python-3.x - 在 python postgresql 中参数化插入查询中出现语法错误
- json - 如何解决 [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] 未处理的异常:FormatException: Unexpected character (at character 1)
- node.js - 在特定日期之间查询 DynamoDB -NodeJs
- javascript - 找不到模块:无法解析 './components/counter.jsx' - 为什么编译失败?
- java - 后缀的中缀,没有循环内的循环
- sql-server - Minikube Pod 连接到外部数据库
- flutter - 通过 Navigator Flutter 传递 BlocProvider
- java - 我不知道为什么它会为另一个数组抛出异常?