先后端分离时,跨域问题如何解决?

首先关于先后端分离开发  跨域问题的解决思路有多种,小喵只知道几种,借此分享给你们,java

        1. 使用Nginx代理: Nginx统一程序入口,经过Nginx分发到不一样的服务.web

        2.JSONP,经过<script>标签请求接口,经过回调函数的方式传递跨域数据.spring

        3.CORS,一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing),后端

                CORS 须要浏览器和服务器同时支持.跨域

                 全部浏览器都支持该功能.浏览器

                 服务器须要单独配置使用  @CrossOrigin 或 全局配置类服务器

小喵采用的是第三种方法 :cors

一 . SpringBoot开发前后端分离

     首先,咱们能够采用在每一个controller上都写一个注解 @ CrossOrigin 函数

但这种方式只限于controller较少的状况下使用,controller多的状况下,配置的有点麻烦.

所以咱们采用全局配置类,将全局配置类放在包的根下面??.config 包下(注: 该包根据项目建立时的包名配置)

代码 :

package com.czxy.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;


/**  全局跨域配置类
 * Created by liangtong.
 */
@Configuration
public class GlobalCorsConfig {
    @Bean
    public CorsFilter corsFilter() {
        //1.添加CORS配置信息
        CorsConfiguration config = new CorsConfiguration();
        //放行哪些原始域
        config.addAllowedOrigin("*");
        //是否发送Cookie信息
        config.setAllowCredentials(true);
        //放行哪些原始域(请求方式)
        config.addAllowedMethod("OPTIONS");
        config.addAllowedMethod("HEAD");
        config.addAllowedMethod("GET");     //get
        config.addAllowedMethod("PUT");     //put
        config.addAllowedMethod("POST");    //post
        config.addAllowedMethod("DELETE");  //delete
        config.addAllowedMethod("PATCH");
        config.addAllowedHeader("*");

        //2.添加映射路径
        UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
        configSource.registerCorsConfiguration("/**", config);

        //3.返回新的CorsFilter.
        return new CorsFilter(configSource);
    }

}

二 . 微服务开发(Spring Boot + Spring Cloud)

微服务开发时咱们只须要将全局配置类方到网关下面便可

这样就能够完成跨域问题的解决!

但愿你们多给小喵一点支持和关注!!!

小喵在这谢谢了!!!!

(^_^)~喵~!!

相关文章
相关标签/搜索