您的位置:首页 > 编程语言 > Java开发

SpringCloud (包含zuul) 解决跨域请求的方案

2019-01-30 18:37 573 查看

POST和GET的跨域请求解决:

        归根结底就是解决这个问题:Access-Control-Allow-Origin

一:在项目下添加该配置类

        该方法相对过时

[code]@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响应头

[code]/*
* 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设置

[code] 没有具体代码

       

注意:在SpringCloud项目中,尤其是包含网关zuul的,一般跨域问题都在zuul中解决了,这时候如果在服务中心再次添加Access-Control-Allow-Origin相关权限设置就会报multiple 多跨域方案的报错:

[code]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代替....如有大神烦请告知-_-,谢谢~

开发落坑,引以为鉴! 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: