cors策略错误

ar5n3qh5  于 2021-07-16  发布在  Java
关注(0)|答案(2)|浏览(367)

这个问题在这里已经有答案了

cors问题-请求的资源上不存在“访问控制允许来源”标头(7个答案)
上个月关门了。
正如在标题中一样,我尝试在java/spring中的Angular 前端和rest端点之间建立连接(我没有开发,也不太了解)。顺便说一句,一切正常。通过邮递,我在终端机里收到了信息

has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

在dev instruments的network选项卡中,options方法出现错误403

Request Method: OPTIONS
Status Code: 403 
Remote Address: xx.xx.xx.xx:xxxx
Referrer Policy: strict-origin-when-cross-origin

所以,我在互联网上搜索了几次后发现了这种情况,原因是cors设置:通常,在这种情况下,一个选项调用在post之前发送;但是,由于cors的原因,期权认购是不允许的。所以,我试着在我的控制器上设置这一行

@CrossOrigin(origins = "*", methods = {RequestMethod.OPTIONS, RequestMethod.GET, RequestMethod.POST, RequestMethod.PUT, RequestMethod.DELETE})

这一次错误发生了变化

Multiple CORS header 'Access-Control-Allow-Origin' not allowed

但我添加的代码是唯一与@crossorigin相似的,我发现其他代码都不相似。
所以,我的问题是:我可以在控制器中搜索哪些代码,或者也可以在其他类中搜索哪些代码,这些类通常与前面提到的decorator具有相同的角色?
(应用程序使用spring security;我没有开发它,而且我在spring安全方面也不是很专业)。
编辑:我在本次讨论中所做的与我的完全不同,但在本例中,我收到了以下新错误:

has been blocked by CORS policy: The 'Access-Control-Allow-Origin' header contains multiple values '*, *', but only one is allowed.

我能做什么?非常感谢你

vyu0f0g1

vyu0f0g11#

在springboot项目中,向控制器添加以下代码。

@CrossOrigin(allowedHeaders =
    {"Orgin", "X-Requested-With", "Content-Type", "Accept", "Authorization"},
    methods = {RequestMethod.POST, RequestMethod.GET, RequestMethod.PUT, 
    RequestMethod.DELETE}
 )

如果您的服务在本地服务器/任何具有任何代理的服务器上运行,这将解决跨源问题。

8oomwypt

8oomwypt2#

您可以添加全局策略以允许访问实现WebMVCConfiguer。

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

@Override
public void addCorsMappings(CorsRegistry registry) {
    registry.addMapping("/**")
        .allowedMethods("*")
        .allowedOrigins("*")
        .allowedHeaders("*");
}

}

相关问题