首先关于先后端分离开发 跨域问题的解决思路有多种,小喵只知道几种,借此分享给你们,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)
微服务开发时咱们只须要将全局配置类方到网关下面便可
这样就能够完成跨域问题的解决!
但愿你们多给小喵一点支持和关注!!!
小喵在这谢谢了!!!!
(^_^)~喵~!!