使用Cors解决Spring项目中的跨域问题

目录

关于Cors

SpringCloud使用Cors解决跨域问题

1.在网关服务中新建一个Cors配置文件

2.编写配置

3.重启服务


关于Cors

 Cors需要浏览器和服务器同时支持。目前所有浏览器都支持该功能,IE浏览器不能低于IE10

浏览器端:因为绝大多数主流浏览器都支持Cors,浏览器会自动完成Cors通信,所以不需要我们做配置

服务器端:   首先你完全不需要改变具体的业务逻辑,原理是通信时请求中多了一下头信息,我们需要设置好这些头信息在一个过滤器中,然后通信时浏览器就会和Cors校验解决问题

需要设置的参数如下:

Access-Control-Arrow-Origin: 是一个具体域名或者*代表任意域名

Access-Control-Arrow-Credentials: 是否允许携带cookie,默认为false

Access-Control-Arrow-Methods: 允许访问的方式

Access-Control-Arrow-Headers: 允许携带的头

Access-Control-Max-Age: 本次许可的有效时间,可以不设置用系统默认值,时间过期前的ajax请求就都不需要预检了

SpringCloud使用Cors解决跨域问题

整体逻辑上,SpringMVC已经集成了Cors跨域过滤器,我们只需要直接设置参数就可以了

1.在网关服务中新建一个Cors配置文件

2.编写配置

package com.leyou.gateway.config;

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 LeyouCorsConfiguration {
    @Bean
    public CorsFilter corsFilter() {
        //初始化cors配置
        CorsConfiguration configuration =new CorsConfiguration();

        //允许跨域的域名,如果要携带cookie不能写*.*代表所有域名都可以跨域访问
        configuration.addAllowedOrigin("http://manage.leyou.com");
        configuration.setAllowCredentials(true);  //允许携带cookie
        configuration.addAllowedMethod("*");   //代表所有请求方式,post。。。
        configuration.addAllowedHeader("*");    //允许携带任何头信息

        //初始化cors配置源对象
        UrlBasedCorsConfigurationSource corsConfigurationSource = new UrlBasedCorsConfigurationSource();
        corsConfigurationSource.registerCorsConfiguration("/**", configuration);

        //返回corsFilter实例,参数:cors配置源对象
        return new CorsFilter(corsConfigurationSource);
    }
}

3.重启服务

重启该微服务项目之后发现跨域成功~

发布了315 篇原创文章 · 获赞 157 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/Delicious_Life/article/details/104206037