Java Wildfly与Spring Boot应用程序:来自SPA应用程序的并发请求导致403
我们通过ear中的战争(使用SpringBootServletilizer),在Wildfly 18中部署了一个Spring引导应用程序。ear中存在其他战争,并且启用了会话共享。战争也共享一个安全域 从浏览器或postman查询SpringBoot应用程序RESTAPI可以正常工作。当它是SPA应用程序时会失败:并发请求得到403禁止,例如在访问日志中:Java Wildfly与Spring Boot应用程序:来自SPA应用程序的并发请求导致403,java,spring-boot,wildfly,undertow,Java,Spring Boot,Wildfly,Undertow,我们通过ear中的战争(使用SpringBootServletilizer),在Wildfly 18中部署了一个Spring引导应用程序。ear中存在其他战争,并且启用了会话共享。战争也共享一个安全域 从浏览器或postman查询SpringBoot应用程序RESTAPI可以正常工作。当它是SPA应用程序时会失败:并发请求得到403禁止,例如在访问日志中: 127.0.0.1 [02/Jul/2020:22:54:46 +0200] "GET /api/Foo?bar=1 HTTP/1
127.0.0.1 [02/Jul/2020:22:54:46 +0200] "GET /api/Foo?bar=1 HTTP/1.1" 403 "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36"
序列化SPA请求使其再次工作,但这只是出于测试目的:我们需要来自SPA的并发请求
我在standalone.xml中尝试了许多配置,例如,因为我们使用会话共享,我希望每个会话一次有多个请求:
<subsystem xmlns="urn:jboss:domain:infinispan:9.0">
<cache-container name="web" default-cache="passivation" module="org.wildfly.clustering.web.infinispan">
<local-cache name="passivation">
<locking isolation="NONE"/>
<transaction mode="BATCH"/>
<file-store passivation="true" purge="false"/>
</local-cache>
<local-cache name="persistent">
<transaction mode="BATCH"/>
<file-store passivation="false" purge="false"/>
</local-cache>
</cache-container>
或者,这是为了让下拖允许并发请求:
<subsystem xmlns="urn:jboss:domain:undertow:10.0" statistics-enabled="true">
<buffer-cache name="default"/>
<server name="default-server">
<http-listener name="default" max-connections="100" socket-binding="http" max-parameters="5000" allow-unescaped-characters-in-url="true"/>
<host name="default-host" alias="localhost">
<access-log pattern="%h %t "%r" %s "%{i,User-Agent}"" use-server-log="false"/>
<filter-ref name="x-frame-options"/>
<filter-ref name="limit-connections"/>
</host>
</server>
<servlet-container name="default" default-encoding="UTF-8" max-sessions="10000">
<jsp-config/>
<session-cookie http-only="true"/>
</servlet-container>
<filters>
<request-limit name="limit-connections" max-concurrent-requests="3000" queue-size="100"/>
<response-header name="x-frame-options" header-name="X-Frame-Options" header-value="SAMEORIGIN"/>
</filters>
</subsystem>
任何帮助摆脱这些讨厌的403对并发请求欢迎 我认为您需要允许使用SPA托管服务器
您可以通过或进行设置。问题已解决:在耳中之战中,前端应用程序不在安全域中。默认的安全域不是其他战争使用的域
我们已经把前线战争放在了同一个领域(通过jboss web.xml)和。。。再也没有403了!我们有点惊讶403没有出现在每个电话中,但是我们很高兴它能工作。非常感谢,但是所有的战争都在同一个领域,所以在同一个领域。最重要的是,大多数请求都顺利通过,只有一些返回403(即使这样,会话实际上仍然是有效的服务器端,即使前端应用程序认为用户已注销)