CORS解决跨域问题(403问题)

2019-08-19 00:00:00 cors 解决

1、什么是跨域问题?

  跨域问题是浏览器对于ajax请求的一种安全限制:一个页面发起的ajax请求,只能是用当前页同域名同端口的路径,这能有效的阻止跨站攻击。

《CORS解决跨域问题(403问题)》

 

2、跨域问题出现的条件:

  1、跨域问题是ajax请求特有的问题。

     2、前后端的域名、端口不一致。

3、CORS跨域解决原理简单分析:

  CORS需要浏览器和服务器的同时支持。

 

  浏览器端(浏览器自动完成):

    发送两次请求,第一次发送option请求 –询问服务器端是否可以跨域;

    第二次才发送正式请求。

 

  服务器端:

    通过拦截器/过滤器统一实现,过滤器过滤所有的请求,匹配对应的ip+端口,如果符合条件,则在响应头中添加允许跨域访问的信息

4、CORS跨域解决方案:

  1、  在网关中配置一个CORS的跨域过滤器:SpringMVC已经帮我们写好了CORS的跨域过滤器,直接使用即可。

  2、  在网关中创建一个配置文件告诉过滤器允许通过的域名和端口即可。

 

  在网关中添加如下配置文件即可(springMVC环境下)

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

@Configuration
public class GlobalCorsConfig {
    @Bean
    public CorsFilter corsFilter() {
        //1.添加CORS配置信息
        CorsConfiguration config = new CorsConfiguration();
        //1) 允许通过的域,不要写*,否则cookie就无法使用了
        config.addAllowedOrigin("http://127.0.0.1:7001");
        config.addAllowedOrigin("http://localhost:7001");
        //2) 是否发送Cookie信息
        config.setAllowCredentials(true);
        //3) 允许的请求方式
        config.addAllowedMethod("OPTIONS");
        config.addAllowedMethod("HEAD");
        config.addAllowedMethod("GET");
        config.addAllowedMethod("PUT");
        config.addAllowedMethod("POST");
        config.addAllowedMethod("DELETE");
        config.addAllowedMethod("PATCH");
        // 4)允许的头信息
        config.addAllowedHeader("*");
        //2.添加映射路径,我们拦截一切请求
        UrlBasedCorsConfigurationSource configSource = new
                UrlBasedCorsConfigurationSource();
        configSource.registerCorsConfiguration("/**", config);
        //3.返回新的CorsFilter.
        return new CorsFilter(configSource);
    }
}

 

    原文作者:十五小哥哥
    原文地址: https://www.cnblogs.com/wanghj-15/p/11374190.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。

相关文章