1
我有一個基於Struts2的應用程序,它從另一個應用程序(跨域)接收請求。爲此,我增加了我的web.xml中的CORS過濾器只是Struts2的過濾器之前:CORS過濾器無法維護會話
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
<init-param>
<param-name>cors.allowed.origins</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.methods</param-name>
<param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.headers</param-name>
<param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers,X-Test-Header
</param-value>
</init-param>
<init-param>
<param-name>cors.exposed.headers</param-name>
<param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials
</param-value>
</init-param>
<init-param>
<param-name>cors.support.credentials</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>cors.preflight.maxage</param-name>
<param-value>1000</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
到應用程序的第一個請求其創建新的會話工作正常。但隨後在隨後的請求中,當我嘗試訪問我的動作類中的同一個會話時,我得到空值。下面是我在做什麼來得到它:
HttpSession session = ServletActionContext.getRequest().getSession(false);
以上優良工程通常但這裏的會話是越來越無效某種程度上也許。 我在啓用了Allow-Control-Allow-Origin:*擴展的Chrome瀏覽器中進行測試。這裏是我的POST請求頭的外觀在控制檯:
Accept:*/*
Accept-Encoding:gzip, deflate, br
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Content-Length:9
Content-Type:application/x-www-form-urlencoded; charset=UTF-8
Host:localhost:7070
Origin:http://evil.com/
Referer:http://testdevsvr:8989/SmartAdministration/home
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
我想知道,如果我缺少的配置或別的東西,是從進一步繼續阻止我錯了東西。
你缺少struts過濾器配置。 –
@Roman C:爲了簡潔,我沒有在這裏添加。我沒有包含struts2過濾器。更新我的問題。 –