【发布时间】:2021-06-20 06:29:55
【问题描述】:
我试图在我的 Angular 前端和 Java / Spring 中的 REST 端点之间建立连接(我没有开发,也不太了解)。通过 GET,一切正常。通过 POST,我在终端收到消息
已被 CORS 政策阻止:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。
并且,在开发工具的“网络”选项卡中,OPTIONS 方法出现错误 403
Request Method: OPTIONS
Status Code: 403
Remote Address: xx.xx.xx.xx:xxxx
Referrer Policy: strict-origin-when-cross-origin
所以,我在互联网上多次搜索后发现了这种情况,原因是 CORS 设置:通常,在这种情况下,在 POST 之前发送 OPTIONS 调用;但是,由于 CORS,不允许调用 OPTIONS。所以,我试图在我的控制器上设置这一行
@CrossOrigin(origins = "*", methods = {RequestMethod.OPTIONS, RequestMethod.GET, RequestMethod.POST, RequestMethod.PUT, RequestMethod.DELETE})
这次错误发生了变化
Multiple CORS header 'Access-Control-Allow-Origin' not allowed
但是我添加的代码是唯一与@CrossOrigin相似的,我没有发现其他类似的。
所以,我的问题是:我可以在控制器或其他类中搜索哪些代码,这些代码通常与上述装饰器具有相同的作用?
(该应用程序使用 Spring Security;我没有开发它,而且我对 Spring Security 不是很专业)。
编辑
我在这个讨论中所做的完全是(与我的不完全相似)但是,在这种情况下,我收到了这个新错误:
已被 CORS 策略阻止:“Access-Control-Allow-Origin”标头包含多个值“*、*”,但只允许一个。
我能做什么?
【问题讨论】:
-
您的客户发送了什么
origin标头? Spring Security 仅返回origin标头值,请参阅 github.com/spring-projects/spring-framework/blob/…
标签: java angularjs spring spring-security