我们在 Jboss 7.2 Server 中部署了一个 Web 应用程序。在其他一些域中,我们尝试在 Iframe 中加载并显示我们的应用程序 URL。我们在浏览器控制台日志中收到错误拒绝在框架中显示"此处显示的域名",因为它将"X-框架选项"设置为"同源"。以下是我尝试做的事情,但仍然面临同样的问题。如果您知道此问题的解决方案,请帮助我。
• 从 JBoss 独立中删除了同源配置条目.xml<response-header name="x-frame-options" header-name="X-Frame-Options" header-value="SAMEORIGIN"/>
• 设置 HTTPServlet 响应对象访问控制标头以允许所有域response.setHeader("access-control-allow-origin", "*");
• 将 HTTPServlet 响应对象 Set-Cookie 属性设置为无response.addHeader("Set-Cookie", String.format("%s; %s", header, "SameSite=None"));
下面是我的 Jboss 独立配置
<subsystem xmlns="urn:jboss:domain:undertow:11.0" default-server="default-server" default-virtual-host="default-host" default-servlet-container="default" default-security-domain="other" statistics-enabled="${wildfly.undertow.statistics-enabled:${wildfly.statistics-enabled:false}}">
<buffer-cache name="default"/>
<server name="default-server">
<http-listener name="default" socket-binding="http" redirect-socket="https" enable-http2="true"/>
<https-listener name="https" socket-binding="https" security-realm="ApplicationRealm" enable-http2="true"/>
<host name="default-host" alias="localhost">
<location name="/" handler="welcome-content"/>
<http-invoker security-realm="ApplicationRealm"/>
<filter-ref name="server-header"/>
<filter-ref name="x-powered-by-header"/>
<filter-ref name="Access-Control-Allow-Origin"/>
<filter-ref name="Access-Control-Allow-Methods"/>
<filter-ref name="Access-Control-Allow-Headers"/>
<filter-ref name="Access-Control-Allow-Credentials"/>
<filter-ref name="Access-Control-Max-Age"/>
</host>
</server>
<servlet-container name="default">
<jsp-config/>
<websockets/>
</servlet-container>
<handlers>
<file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
</handlers>
<filters>
<response-header name="server-header" header-name="Server" header-value="WildFly/10"/>
<response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/>
<response-header name="Access-Control-Allow-Origin" header-name="Access-Control-Allow-Origin" header-value="*"/>
<response-header name="Access-Control-Allow-Methods" header-name="Access-Control-Allow-Methods" header-value="GET, POST, OPTIONS, PUT"/>
<response-header name="Access-Control-Allow-Headers" header-name="Access-Control-Allow-Headers" header-value="accept, authorization, content-type, x-requested-with"/>
<response-header name="Access-Control-Allow-Credentials" header-name="Access-Control-Allow-Credentials" header-value="true"/>
<response-header name="Access-Control-Max-Age" header-name="Access-Control-Max-Age" header-value="1"/>
</filters>
</subsystem>
您在 Wildfly 上所做的配置更改看起来很好。 您确定作为响应,您仍然获得"X帧选项"作为标题吗? 如果没有,它似乎在浏览器上被阻止。看到这个: https://www.thegeekstuff.com/2016/09/disable-same-origin-policy/
PS:出于安全原因,强制执行同源策略。在做出决定时,请仔细考虑这一点。