gpt4 book ai didi

spring - 无法使用 Spring 和 Tomcat 启用 CORS

转载 作者:行者123 更新时间:2023-11-28 22:01:42 27 4
gpt4 key购买 nike

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

我收到这个错误:

XMLHttpRequest cannot load http://localhost:9090/rest/location/8609d865-d87a-4340-ab87-0e7f90a6fda9. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access. The response had HTTP status code 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>

-向我的 Controller 添加注解

@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();
}

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

最佳答案

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

  • 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)。我确信可以用相同的方式配置 Spring 。

关于spring - 无法使用 Spring 和 Tomcat 启用 CORS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38149663/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com