存在“Access-Control-Allow-Origin”标题

时间:2018-05-18 12:59:50

标签: java spring

我有一个带功能的简单控制器。

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

}

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

  

zone.js:2969 POST   http://localhost:8080/api/docker/container/Env666/pause 403()   http://localhost:8080/api/docker/container/Env666/pause:不   请求中存在“Access-Control-Allow-Origin”标头   资源。因此不允许来源“http://localhost:4200”   访问。响应的HTTP状态代码为403。

在我使用service functionallity后,这种情况开始发生。

1 个答案:

答案 0 :(得分:0)

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

  

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

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

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