Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从Angular前端到Spring后端的POST调用期间出现CORS策略错误_Java_Angularjs_Spring_Spring Security - Fatal编程技术网

Java 从Angular前端到Spring后端的POST调用期间出现CORS策略错误

Java 从Angular前端到Spring后端的POST调用期间出现CORS策略错误,java,angularjs,spring,spring-security,Java,Angularjs,Spring,Spring Security,正如在标题中一样,我试图在Java/Spring中的角度前端和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 re

正如在标题中一样,我试图在Java/Spring中的角度前端和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设置:通常,在这种情况下,在帖子之前会发送一个选项调用;但是,由于CORS的原因,不允许进行期权认购。所以,我试图在我的控制器上设置这一行

@CrossOrigin(origins = "*", methods = {RequestMethod.OPTIONS, RequestMethod.GET, RequestMethod.POST, RequestMethod.PUT, RequestMethod.DELETE})
这一次,错误发生了变化

Multiple CORS header 'Access-Control-Allow-Origin' not allowed
但是我添加的代码是与@CrossOrigin唯一相似的,我发现其他代码没有相似之处

那么,我的问题是:我可以在控制器中搜索哪些代码,或者在其他类中搜索哪些代码,这些类通常具有与上述装饰器相同的角色?

(该应用程序使用SpringSecurity;我没有开发它,我也不是SpringSecurity方面的专家)

编辑:我所做的与本次讨论中的完全相同(与我的不完全相同),但在本例中,我收到一个新错误:


我能做什么?非常感谢您在spring boot项目中向控制器添加以下代码

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

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

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

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

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

}

谢谢,但问题不是这个!问题是,如果我这样做,我会收到消息“Multiple CORS header'Access Control Allow Origin'not allowed”。请阅读我文章的最后一部分,直到最后。非常感谢你的帮助!您的解决方案不起作用,因为DispatcherServlet是在Spring安全过滤器链之后执行的。飞行前请求从未到达dispatcher servlet。谢谢,但问题不是这个!问题是,如果我这样做,我会收到消息“Multiple CORS header'Access Control Allow Origin'not allowed”。请阅读我文章的最后一部分,直到最后。非常感谢你的帮助@阿基米德他的回答不完整,但至少它告诉你,你必须删除
RequestMethod。选项
以消除错误,不允许多个CORS标题“访问控制允许源代码”。你的客户发送了什么
Origin
标题?Spring Security仅返回
原点
标题值,请参阅
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

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