POST和GET的跨域请求解决:
归根结底就是解决这个问题:Access-Control-Allow-Origin
一:在项目下添加该配置类
该方法相对过时
@Configuration
@EnableWebMvc
public class CorsConfig implements WebMvcConfigurer {
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**");
}
};
}
}
二:获取response响应对象,在响应头里边添加Access-Control-Allow-Origin响应头
/*
* import javax.servlet.http.HttpServletResponse;
*/
// 允许跨域访问的域名:若有端口需写全(协议+域名+端口),若没有端口末尾不用加'/'
response.setHeader("Access-Control-Allow-Origin", "*");
// 允许前端带认证cookie:启用此项后,上面的域名不能为'*',必须指定具体的域名,否则浏览器会提示
response.setHeader("Access-Control-Allow-Credentials", "true");
// 提示OPTIONS预检时,后端需要设置的两个常用自定义头
response.setHeader("Access-Control-Allow-Headers", "Content-Type,X-Requested-With");
三:使用拦截器(Interceptor)或者过滤器(Filter),类似于SpringCloud中的zuul设置
没有具体代码
注意:在SpringCloud项目中,尤其是包含网关zuul的,一般跨域问题都在zuul中解决了,这时候如果在服务中心再次添加Access-Control-Allow-Origin相关权限设置就会报multiple 多跨域方案的报错:
Failed to load http://xxx.yyy.zzz.com/zuul设置/controller接口path: The 'Access-Control-Allow-Origin' header contains multiple values 'http://xxx.yyy.zzz.com, *', but only one is allowed. Origin 'http://xxx.yyy.zzz.com' is therefore not allowed access.
PUT跨域请求:
暂未解决,临时使用post代替....如有大神烦请告知-_-,谢谢~
开发落坑,引以为鉴!