首先关于前后端分离开发 跨域问题的解决思路有多种,小喵只知道几种,借此分享给大家,
1. 使用Nginx代理: Nginx统一程序入口,通过Nginx分发到不同的服务.
2.JSONP,通过<script>标签请求接口,通过回调函数的方式传递跨域数据.
3.CORS,一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing),
CORS 需要浏览器和服务器同时支持.
所有浏览器都支持该功能.
服务器需要单独配置使用 @CrossOrigin 或 全局配置类
小喵采用的是第三种方法 :
一 . 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)
微服务开发时我们只需要将全局配置类方到网关下面即可
这样就可以完成跨域问题的解决!
希望大家多给小喵一点支持和关注!!!
小喵在这谢谢了!!!!
(^_^)~喵~!!