angular - 无法解决请求的资源上不存在 'Access-Control-Allow-Origin' header

标签 angular tomcat spring-boot cors

我正在使用 spring boot 和 angular 2 项目。 如果我在本地测试,一切都很好。 当我在 apache tomcat 服务器中部署 .war 时,它显示了这个著名的错误:

Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin .

我在tomcat的网站上搜索。 添加这个:

    <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</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>10</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>CorsFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

不会改变任何东西。

此外,我试过这个:

@Override
protected void configure(HttpSecurity http) throws Exception {


    http.cors().and().authorizeRequests().antMatchers(HttpMethod.OPTIONS, "/*").permitAll();

    http.httpBasic();

    http.csrf().disable();
    }

最佳答案

Spring boot 应用程序必须授权来自“微型服务器”Angular2 的 http 请求。

因此,您应该授权您需要的 http 请求方法(GET、POST、PUT、DELETE、OPTIONS)。 ( header :访问控制请求方法)。

您应该授权您的 angular2 服务器的可能主机(例如 http://localhost:8080) ( header :访问控制允许来源)

并且,您应该授权 http 请求中存在的 header ( header :访问控制请求 header )

关于angular - 无法解决请求的资源上不存在 'Access-Control-Allow-Origin' header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45417790/

相关文章:

java - ClientAbortException : java.net.SocketException:连接由对等方重置:套接字写入错误

java - 我在更新现有的 aws cloud front CNAME 时遇到问题

angular - 如何在primeng条形图上自定义数据集

Angular2 http 同步

java - Hibernate映射导致内存泄漏

tomcat - Tomcat启动失败,关闭端口8005已被使用

javascript - 组件渲染 View 后更新 dom,Angular2 中的最佳实践?

javascript - 在 angular2 中找不到 json 文件

json - Spring Boot json 在没有默认构造函数的情况下建模

spring - Swagger 2 (Spring Fox) 将 'es' 添加到我的 API 中