我做的项目是前后端分离的,所以设置的是会话跨域生效的,但是,在设置完下面这段代码之后,
@Configuration
public class CrossDomainConfiguration extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowCredentials(true)
.allowedMethods("GET", "POST", "DELETE", "PUT")
.maxAge(3600);
}
}
出现来如题的问题,具体怎么产生的我没有探究,如果有哪位看官知道的话,可以告诉我一下,
下面是解决的方法:
首先,提供一个不怎么能成功的方法,因为我就没成功:
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Vary", "Origin");
// // Access-Control-Max-Age
// response.setHeader("Access-Control-Max-Age", "3600");
// Access-Control-Allow-Credentials
response.setHeader("Access-Control-Allow-Credentials", "true");
// Access-Control-Allow-Methods
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
// Access-Control-Allow-Headers
response.setHeader("Access-Control-Allow-Headers",
"Origin, X-Requested-With, Content-Type, Accept, " + "X-CSRF-TOKEN");
主要就是最上面的这行代码,当设置为“*”号的时候,我这边没有生效。
然后用的是,先取到发送过来的origin,然后将其放入header中。
String origin = request.getHeader("Origin");
response.setHeader("Access-Control-Allow-Origin", origin);
这样就成功了。