【发布时间】:2021-06-14 05:05:00
【问题描述】:
这是我们正在运行的:
- Windows Server 2016 64 位
- Apache:2.4.46(从 2.4.43 升级)-->“前端”
- Tomcat:9.0.44(从 9.0.8 升级)-->“后端”
- Java:12.0.2
我们让 Apache 和 Tomcat 都在同一个 Windows 服务器上运行。这是前端和后端。为了安全起见,我正在尝试将我们所有的东西都升级到最新版本。当然,我已经破坏了一切。
查看 Tomcat/Java 日志后,我发现我们的两个 AJP 连接器无法启动。我被要求为这些连接器添加以下属性以使其启动:
<Connector
...
...
address="0.0.0.0"
secretRequired="false"
/>
这似乎解决了我们的大部分问题;但是,现在我的一个 Web 应用程序遇到了 CORS 问题。我们的其他开发人员没有报告任何问题。
Access to XMLHttpRequest at 'https://SERVER/endpoint' from origin 'https://SERVER.DOMAIN.LOCAL' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
现在我正在输入这个,我注意到第一个指示符只是服务器的名称,第二个指示符是服务器的 FQDN。不知道是不是这个问题?
为什么我在升级 Tomcat/Apache 后会遇到所有这些问题?
如果我的 AJP 连接器和工作器都在同一个盒子上,我需要设置一个秘密吗?
为什么我现在遇到了 CORS 问题,而我以前没有?如何设置 CORS 过滤器,以便它知道 Apache Tomcat(从该服务器到该服务器)之间的通信是安全的!?!?
以下设置是否安全?在升级之前,我们从未启用此设置。
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
【问题讨论】:
-
我相信我有一些答案,如果我成功了,我明天会发布这个问题的答案。
-
升级后为什么要在配置中添加
CorsFilter?您在浏览器中打开https://SERVER.DOMAIN.LOCAL,但该页面上的脚本向https://SERVER/endpoint发送请求。您应该更改脚本,以便它们使用来自window.location的地址,或者将cors.allowed.origins参数添加到过滤器。 -
我直到后来才发现我的错误,感谢您引用
window.location的提示。这很有帮助。