に設定されていない私は、CORSヘッダーを設定するにはいくつかの方法を試してみました:アクセス制御 - 許可 - 起源応答
- はcom.thetransactioncompany.cors-ファイラー を使用して自分のサーブレットフィルタ
- を追加します
- スプリングの使用WebMvcConfigurer Bean
何も機能していません!
誰かが私を助けますか?ここで第一の方法...
web.xmlの
<!-- Spring Container -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextClass</param-name>
<param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>de.hotelonlineportal.config.AppConfig</param-value>
</context-param>
<!-- Device Detection -->
<filter>
<filter-name>deviceResolverRequestFilter</filter-name>
<filter-class>org.springframework.mobile.device.DeviceResolverRequestFilter</filter-class>
</filter>
<!-- Rest Dispatcher -->
<servlet>
<servlet-name>rest-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value></param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>rest-dispatcher</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<!-- Spring Security -->
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<!-- CORS Filter -->
<filter>
<filter-name>cors-filter</filter-name>
<filter-class>de.hotelonlineportal.security.CORSFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>cors-filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
CORSFilter.java
public class CORSFilter implements Filter {
private static Logger logger = LogManager.getLogger(CORSFilter.class);
public CORSFilter() {
logger.info("SimpleCORSFilter init");
}
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS,DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With, remember-me");
chain.doFilter(req, res);
}
@Override
public void init(FilterConfig filterConfig) {
}
@Override
public void destroy() {
}
}
フィルタが正常に適用されてしまったが、それでもrepsonseは、任意のアクセスが含まれていないHTTPリクエストを起動した場合-Control *ヘッダー。
クロームデバッガは、コンソールで私にこれを示しています
XMLHttpRequestが http://localhost:8080/hop-backend/rest/shop/listHotelsLandingPageをロードすることはできません。いいえ 要求された リソースに 'Access-Control-Allow-Origin'ヘッダーが存在します。したがって、オリジン 'http://localhost:9000'は許可されません。 応答はHTTPステータスコード500でした。
、何がありますか?デバッグの目的のために、ヘッダーAccess-Control-Allow-Originを*に設定しようとしましたか? –
サーバーのログを確認してください。 – zeroflagL
request.getHeader( "Origin")は私にhttp:// localhost:9000を表示します。私もワイルドカード*を試しました。 –