我有一个内置在云上的Java / Spring内置的API,最近在网站无法使用时遇到了CORS问题。我发现我的API不支持CORS。这就是我解决问题的方法:
https://spring.io/guides/gs/rest-service-cors/(在页面上搜索“启用CORS”)
只需添加@CrossOrigin
注释,它将:
在其响应中包含CORS访问控制头
这似乎最初解决了我的问题。但是,由于我没有参与解决这个问题(我只需添加注释),我显然有一些困惑。出现更多问题。我在检查我的回答时注意到我有getAllResponseHeaders
和getResponseHeader
的空值。所以我的CORS响应没有发回任何标题。
问题:
在什么情况下我需要发回响应头?阅读完Spring文档后,我通过使用@CrossOrigin
注释默认接受所有来源。这意味着我的API应该接受来自所有外部资源的请求。但显然这是因为React“获取”请求失败了。从我正在进行的研究中,我想我可能需要发回一个标题,但我不知道为什么/何时需要这样做。
为什么Postman能够绕过CORS问题?甚至在我启用CORS服务器端之前,通过Postman的请求按预期工作。