【问题标题】:'Access-Control-Allow-Origin' header is present存在“Access-Control-Allow-Origin”标头
【发布时间】:2018-10-28 22:18:54
【问题描述】:

我有一个带有函数的简单控制器。

@RestController
@CrossOrigin(origins = "http://localhost:4200", allowedHeaders = "*")
@RequestMapping("/api")
public class DockerController {

  @Autowired
private DockerService dockerService;

  @PostMapping("/docker/container/{containerName}/pause")
public boolean pauseContainer(@PathVariable String containerName) {
    dockerService.pauseContainer(containerName);
    return true;
}

}

但是当我尝试从 Angular 应用程序运行它时,我得到了

zone.js:2969 发布 http://localhost:8080/api/docker/container/Env666/pause403 () http://localhost:8080/api/docker/container/Env666/pause:没有 请求中存在“Access-Control-Allow-Origin”标头 资源。因此不允许使用原点“http://localhost:4200” 使用权。响应的 HTTP 状态代码为 403。

这在我使用服务功能后开始发生。

【问题讨论】:

标签: java spring


【解决方案1】:

我成功重现了 CORS 错误,与 Spring CrossOrigin Javadoc 告诉的相反:

默认情况下,支持的方法与控制器方法映射到的方法相同。

我必须在 CrossOrigin 注释中手动指定方法:

@CrossOrigin(origins="http://localhost:4200", allowedHeaders="*", methods={RequestMethod.POST})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-11
    • 2019-08-15
    • 2017-02-21
    • 2015-09-28
    • 2016-10-30
    • 1970-01-01
    • 2019-02-07
    • 2016-05-07
    相关资源
    最近更新 更多