gpt4 book ai didi

Apache 和 Tomcat 集成

转载 作者:行者123 更新时间:2023-11-28 22:16:27 26 4
gpt4 key购买 nike

我是 Apache 和 Tomcat 的新手,所以尽量向我解释你所知道的 :P 我只在本地工作

我有一个应用程序需要 Tomcat 来执行 Servlet,所以我可以输入:

http://localhost:8080/rrcapp/xservlet?consult=list01

行得通。我的网页也运行 Apache 2.4,所以我可以输入:

http://localhost:80/websrv/index.htm

这也行。当我在 Apache 服务的 index.htm 中使用 Chrome 在 Iframe 中调用该 Servlet 时出现问题,出现错误:

Refused to display ...in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'.

我读过有关在我的 httpd.conf 中设置以取消设置 x-frame-options 或使用 ALLOW-FROM 进行设置的信息,但它似乎不适用于 Chrome。

然后,我阅读了有关 CSP 策略的信息,但我不知道如何在 mi httpd.conf 中设置此类策略,以便我可以在我的 Apache 服务器中的 iframe 中运行 servlet。

谁能帮我解决这个问题?

问候 :)

编辑 1:

感谢 Eddie James Carswell II,我知道错误来自 Tomcat。我已经阅读了他给我看的文档,并尝试在 Tomcat 的/conf 目录中配置我的 web.xml,结果如下:

    <filter>
<filter-name>httpHeaderSecurity</filter-name>
<filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
<async-supported>true</async-supported>

<init-param>
<param-name>antiClickJackingEnabled</param-name>
<param-value>true</param-value>
</init-param>

<init-param>
<param-name>antiClickJackingOption</param-name>
<param-value>ALLOW-FROM</param-value>
</init-param>

<init-param>
<param-name>antiClickJackingUri</param-name>
<param-value>http://localhost:80/*</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>httpHeaderSecurity</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>

我重新启动了 Tomcat 服务器并再次尝试加载 Iframe 并得到了另一个错误:

Invalid 'X-Frame-Options' header encountered when loading 'http://localhost:8080/rrcapp/xservlet?consult=list01': 'ALLOW-FROM http://localhost:80/*' is not a recognized directive. The header will be ignored.

编辑 2:

它似乎适用于最新版本的 Firefox (57.0 Quantum) 以及 IE 10 和 EDGE。不过,它不适用于 Chrome :P

也许 ALLOW-FROM 与 Chrome 有一些问题,但如果我没有错,我无法在 Tomcat 中建立 CSP 指令。如何在 Chrome 上解决此问题?

这里有什么帮助吗? :)

提前致谢

最佳答案

首先,我要感谢 Eddie James Carswell II,他一直在帮助我解决这个问题,给了我非常宝贵的建议。

最后,我通过 httpd 使用 Proxys 获得了它。如链接的文章中所述,取消注释此行:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

然后在 Apache 中配置我的应用程序目录:

ProxyRequests Off
ProxyPass /rrcapp http://localhost:8080
ProxyPassReverse /rrcapp http://localhost:8080

<Location "/rrcapp">
Order allow,deny
Allow from all
</Location>

现在,我可以在 JS 调用中编写。示例:

document.location = '/rrcapp/xservlet?consult=list01';

并访问位于 Tomcat 中的我的应用程序资源。

为什么是这个解决方案?它在所有浏览器中都通用,并且易于配置。

为什么不是另一个?它适用于最新版本的 Firefox (57.0 Quantum) 以及 IE 10 和 EDGE。不过,它不适用于 Chromem,这是我使用的浏览器。无论如何设置配置,这是在 Tomcat 目录中的 web.xml 中。

    <filter>
<filter-name>httpHeaderSecurity</filter-name>
<filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
<async-supported>true</async-supported>

<init-param>
<param-name>antiClickJackingEnabled</param-name>
<param-value>true</param-value>
</init-param>

<init-param>
<param-name>antiClickJackingOption</param-name>
<param-value>ALLOW-FROM</param-value>
</init-param>

<init-param>
<param-name>antiClickJackingUri</param-name>
<param-value>http://localhost:80/*</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>httpHeaderSecurity</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>

希望这对 future 有所帮助:)

谢谢艾迪!

关于Apache 和 Tomcat 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47453863/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com