我有一个带功能的简单控制器。
@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后,这种情况开始发生。
答案 0 :(得分:0)
我成功地重现了CORS错误,与Spring CrossOrigin Javadoc相反:
默认情况下,支持的方法与控制器方法映射的方法相同。
我必须在CrossOrigin注释中手动指定方法:
@CrossOrigin(origins="http://localhost:4200", allowedHeaders="*", methods={RequestMethod.POST})