spring boot Access-Control-Allow-Origin 解决跨域

1.使用无参数注解

@CrossOrigin
@CrossOrigin
@PostMapping(value ="/public/login")
@ResponseBody
public Response publicLogin(String phone, String pass) {

    return new Response();
}

2.使用有参数注解

@CrossOrigin(origins = "*",maxAge = 3600)//跨域
@CrossOrigin(origins = "*",maxAge = 3600)//跨域
@PostMapping(value ="/public/login")
@ResponseBody
public Response publicLogin(String phone, String pass) {

    return new Response();
}

3.继承WebMvcConfigurer

@Configuration
public class WebConfigurer implements WebMvcConfigurer {
    
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")
                .maxAge(3600)
                .allowCredentials(true);
    }
}
还有使用过滤器的方法

失效的解决办法: 刚开始使用的时候,总是第一次可以,再访问就失效了,我想可能是第二次访问携带了cookie,因为有博客说明,如果携带cookie,就会失效,解决办法是加上allowCredentials="true"

@CrossOrigin(allowCredentials="true",maxAge = 3600)

参考:https://blog.csdn.net/shuoshuo132/article/details/83146668

 

 

 

如果浏览器返回状态码是415,可能是不正确的请求导致无法得到预期的响应,方法有错误,返回的数据错误的问题.

参考

https://blog.csdn.net/taiyangnimeide/article/details/78305131

 

也可能是

@RequestMapping(method = RequestMethod.POST)

没有加method = RequestMethod.POST的问题

参考

https://blog.csdn.net/cacheaads/article/details/100041281

 

 

 

 

参考https://yq.aliyun.com/articles/689064?spm=a2c4e.11153940.0.0.267a30fd27CR65

 

 

你可能感兴趣的:(java)