【问题标题】:Cannot enable CORS with Spring and Tomcat无法使用 Spring 和 Tomcat 启用 CORS
【发布时间】:2016-11-04 02:48:09
【问题描述】:

我在 localhost:9090 上运行我的 tomcat 7 服务器,并且 xampp 在端口 80 上运行。我想从端口 80 向端口 9090 上的 REST-API (Spring 4.2.2) 发出 PUT 请求(使用 jQuery)。

我收到此错误:

XMLHttpRequest 无法加载 http://localhost:9090/rest/location/8609d865-d87a-4340-ab87-0e7f90a6fda9。 对预检请求的响应未通过访问控制检查:否 请求中存在“Access-Control-Allow-Origin”标头 资源。因此,Origin 'http://localhost' 不允许访问。 响应的 HTTP 状态代码为 403。

谷歌搜索后,我找到了几个解决方案 - 但没有一个有效。

我尝试了什么:

-向web.xml添加过滤器

<filter>
  <filter-name>CorsFilter</filter-name>
  <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>CorsFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

-给我的控制器添加注解

@CrossOrigin
@RestController
public class LocationController

-在我的回复中添加标题

return ResponseEntity.status(HttpStatus.OK).header("Access-Control-Allow-Origin", "*").build();

-添加一个OPTIONS路由

@RequestMapping(value = "/**", method = RequestMethod.OPTIONS)
@ResponseBody
public ResponseEntity options(@PathVariable String locationID) {
    return ResponseEntity.status(HttpStatus.OK).header("Access-Control-Allow-Origin", "*").build();
}

它们都不适合我,我仍然收到上述错误。有什么想法吗?

【问题讨论】:

    标签: spring tomcat


    【解决方案1】:

    这就是我在当前项目中的做法:

    • pom.xml 中添加了以下依赖项

    <dependency> <groupId>com.thetransactioncompany</groupId> <artifactId>cors-filter</artifactId> <version>2.4</version> </dependency>

    • web.xml 中添加了以下过滤器

    <filter> <filter-name>CORS</filter-name> <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class> <init-param> <param-name>cors.supportedMethods</param-name> <param-value>GET, POST, HEAD, OPTIONS, DELETE, PUT</param-value> </init-param> </filter>

    • 将过滤器映射添加到过滤器映射列表的顶部

    <filter-mapping> <filter-name>CORS</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

    请注意,我明确添加了 PUT 作为支持的方法。

    这种方法的唯一缺点是额外的依赖。

    spring-web 有自己的 CORS 过滤器实现 (org.springframework.web.filter.CorsFilter)。我确信可以以相同的方式配置弹簧。

    【讨论】:

      猜你喜欢
      • 2017-02-21
      • 2021-02-07
      • 2019-03-13
      • 1970-01-01
      • 1970-01-01
      • 2019-08-17
      • 2016-12-04
      • 2020-02-26
      相关资源
      最近更新 更多