前后端跨域问题推荐cors
后端配置cors跨域
复制@Configurationpublic class GlobalCorsConfig {
@Bean
public CorsFilter corsFilter() {
CorsConfiguration config = new CorsConfiguration();
// 设置你要允许的网站域名
config.addAllowedOrigin("http://localhost:8080");
//允许跨域发送cookie
config.setAllowCredentials(true);
//放行全部原始头信息
config.addAllowedHeader("*");
//允许所有请求方法跨域调用
config.addAllowedMethod("*");
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration("/**", config);
return new CorsFilter(source); }}
注:跨域是指在浏览器中,由于浏览器的同源策略(Same Origin Policy)的限制,导致协议、域名、端口号中任意一个不同的请求都会被浏览器视为跨域请求。如果前后端存在跨域问题,需要采取相应的解决措施,以下是常见的解决方法:
JSONP:在客户端页面中动态创建 script 标签,src 属性指向服务器 API 的地址,并将一些回调函数的参数传递给服务器,服务器把数据放在回调函数的参数中,最终返回给客户端,在客户端通过回调函数来拿到数据。
CORS(跨域资源共享):后端主动设置让浏览器能够跨域访问,服务器设置 Access-Control-Allow-Origin 和其他一些 Access-Control-* 的响应头来控制。
代理:前端通过自己的后台 API(一般不存在跨域问题)来 proxy 转发请求,实现前端与后端的连接,然后由后台 API 来调用目标 API 数据并返回给前端。
Nginx 反向代理:使用 Nginx 服务器作为中间层,将前端请求转发到后端,由 Nginx 代理请求,从而实现跨域。
总的来说,跨域问题可以通过上述方法解决,选择哪种方法取决于具体的应用场景和需求,通常建议采用 CORS 的方式来解决跨域问题,因为它是 HTML5 标准中定义的官方解决方案,具有较好的兼容性。
文件参考:
跨域:https://segmentfault.com/a/1190000015597029
CORS:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CORS