【发布时间】: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();
}
它们都不适合我,我仍然收到上述错误。有什么想法吗?
【问题讨论】: