RuoYi -Cloud开源框架-跨域配置
创始人
2024-02-12 06:26:31
0

🦆博主介绍:小黄鸭技术

🌈擅长领域:Java、实用工具、运维

👀 系列专栏:📢开发工具 Java之路 八股文之路

📧如果文章写作时有错误的地方,请各位大佬指正,一起进步!!!

🧡欢迎大家点赞➕收藏⭐➕评论💬支持博主🤞  

目录

 什么是跨域

RoYi-Cloud如何解决跨域

            💖 配置方式

代码方式                

Nginx反向代理方式

参数解析


什么是跨域

        简单来说就是违背了浏览器的同源策略,指协议,域名,端口都要相同,其中有一个不同都会产生跨域。

RoYi-Cloud如何解决跨域

配置方式:

                通过在gateway的nacos中的gateway.yml添加以下配置

spring:cloud:gateway:globalcors:corsConfigurations:'[/**]':allowedOriginPatterns: "*"allowed-methods: "*"allowed-headers: "*"allow-credentials: trueexposedHeaders: "Content-Disposition,Content-Type,Cache-Control"

代码方式:                

                在gateway项目中新增CorsConfig.java

package com.ruoyi.gateway.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.web.cors.reactive.CorsUtils;
import org.springframework.web.server.ServerWebExchange;
import org.springframework.web.server.WebFilter;
import org.springframework.web.server.WebFilterChain;
import reactor.core.publisher.Mono;/*** 跨域配置* * @author ruoyi*/
@Configuration
public class CorsConfig
{/*** 这里为支持的请求头,如果有自定义的header字段请自己添加*/private static final String ALLOWED_HEADERS = "X-Requested-With, Content-Type, Authorization, credential, X-XSRF-TOKEN, token, Admin-Token, App-Token";private static final String ALLOWED_METHODS = "GET,POST,PUT,DELETE,OPTIONS,HEAD";private static final String ALLOWED_ORIGIN = "*";private static final String ALLOWED_EXPOSE = "*";private static final String MAX_AGE = "18000L";@Beanpublic WebFilter corsFilter(){return (ServerWebExchange ctx, WebFilterChain chain) -> {ServerHttpRequest request = ctx.getRequest();if (CorsUtils.isCorsRequest(request)){ServerHttpResponse response = ctx.getResponse();HttpHeaders headers = response.getHeaders();headers.add("Access-Control-Allow-Headers", ALLOWED_HEADERS);headers.add("Access-Control-Allow-Methods", ALLOWED_METHODS);headers.add("Access-Control-Allow-Origin", ALLOWED_ORIGIN);headers.add("Access-Control-Expose-Headers", ALLOWED_EXPOSE);headers.add("Access-Control-Max-Age", MAX_AGE);headers.add("Access-Control-Allow-Credentials", "true");if (request.getMethod() == HttpMethod.OPTIONS){response.setStatusCode(HttpStatus.OK);return Mono.empty();}}return chain.filter(ctx);};}
}

Nginx反向代理方式:

location /api {add_header Access-Control-Allow-Origin http://localhost:3000 always;add_header Access-Control-Allow-Headers "Accept,Accept-Encoding,Accept-Language,Connection,Content-Length,Content-Type,Host,Origin,Referer,User-Agent";add_header Access-Control-Allow-Methods "GET, POST, PUT, OPTIONS";add_header Access-Control-Allow-Credentials true;if ($request_method = 'OPTIONS') {return 200;}proxy_cookie_domain ~\.?duck.com $host;proxy_pass https://duck.com;
}

参数解析

allowedOriginPatterns: 放行域名,可以多个,用","分割

allowed-methods: 放行请求方式,可以多个,例如

"GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS", "PATCH"

allowed-headers: 放行头部信息

allow-credentials: 是否发送Cookie信息

exposedHeaders: 暴露哪些头部信息(因为跨域访问默认不能获取全部头部信息)

🧡欢迎大家点赞➕收藏⭐➕评论💬支持博主🤞   

相关内容

热门资讯

五粮液全资子公司新增一项246... (转自:快查一企业中标了)快查APP显示,五粮液相关公司四川省宜宾普拉斯包装材料有限公司于2025年...
设计装装饰公司创业计划书修公司... 装饰公司计划书创业计划书怎么做创业计划书案例室内设计装修公司创业计划书装修公司项目计划书装饰公司创业...
精益创业 精益创业 精益创业方... 创新创业收获中国十大创业人轻创业模式对精益创业的理解精益创业为什么会流行精益创业的核心词汇精益创业电...
7月8日国内四大证券报纸、重要...   从《关于进一步培育新增长点繁荣文化和旅游消费的若干措施》发布,到《提振消费专项行动方案》出台,再...
和创会落地黑龙江 150个省外... 创新创业收获中国十大创业人轻创业模式对精益创业的理解精益创业为什么会流行精益创业的核心词汇精益创业电...
“城市·艺术·建筑”系列展开展 转自:天津日报  本报讯(记者 张帆)日前,“城市·艺术·建筑”系列展油画篇“城市乌托邦”在庆王府开...
“众星云集”不是票房灵药 转自:天津日报  改编自民国四大奇案之一,陈可辛执导,章子怡、雷佳音、王传君、赵丽颖、杨幂、李现、易...
适合小本创业的项目有哪5个 创... 小城镇创业项目创业小项目适合创业的小项目创业小项目推荐城镇适合创业的小生意城镇创业做什么生意好乡镇小...
合理使用资金 做精明的创业者 ... 怎么学互联网怎么赚钱我想创业但是没钱创业融资的渠道有哪些?一个人0资金怎么创业创新创业项目点子最挣钱...
以爱为笔绘就保障画卷 以责任担... 2025年7月8日是第十三个全国保险公众宣传日,中国人保财险江苏省分公司(以下简称“江苏人保财险”)...