ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

jeecg-boot跨域配置实战:从报错到生效的三档落地清单

jeecg-boot跨域配置实战:从报错到生效的三档落地清单 jeecg-boot跨域配置实战从报错到生效的三档落地清单【免费下载链接】jeecg-boot【低代码v2.0一句话即可生成整个系统】企业级AI低代码平台一键生成前后端代码甚至整个系统。 AI Skills 一句话画流程、设计表单、生成报表、大屏。内置 AI应用平台涵盖AI聊天、知识库、流程编排、MCP插件等兼容主流大模型。引领AI低代码「Skills 生成 → 在线配置 → 代码生成 → 手工合并-AI修改」开发模式解决 Java 项目 90% 重复工作提高效率又不失灵活。项目地址: https://gitcode.com/GitHub_Trending/je/jeecg-boot在浏览器打开 jeecg-boot 低代码平台的前端页面调接口的一瞬间控制台弹出Access to fetch at http://localhost:8080/jeecg-boot/sys/user/queryAllUserList from origin http://localhost:3100 has been blocked by CORS policy: No Access-Control-Allow-Origin header is present。前后端分离部署的 jeecg-boot低代码 AI 应用平台只要前端和 API 不同源就一定会撞上这道跨域CORS浏览器同源策略的放行机制关卡。本文把卡点、内置能力和三档环境的做法一次讲清。① 现象拆解请求卡在哪一层把一次跨域请求的生命周期拆开看卡点不在服务端代码而在链路上的放行层浏览器发起跨域请求前先自动发一个 OPTIONS 预检请求preflight正式请求前的敲门动作问对方POST 能不能带X-Access-Token头放行层检查 Origin、请求方法、请求头通过才回Access-Control-Allow-Origin等响应头放行层不同落点不同单体部署时后端 CorsFilter 直接应答微服务部署时请求先经 Spring Cloud Gateway网关所有请求的必经入口由网关的全局 CORS 配置应答直连后端服务再配 CORS 是多余的。② 项目内置能力盘点能力所在位置默认行为适用场景单体 CORS 过滤器jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/WebMvcConfiguration.java允许全部来源/请求头/方法allowCredentialstrue单体部署、前后端异源直连环境条件开关jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/CorsFilterCondition.java检测到spring.cloud.nacos.discovery.server-addr即判定为微服务不注册单体过滤器防止单体与网关双份 CORS 配置互相干扰网关全局 CORSjeecg-boot/jeecg-server-cloud/jeecg-cloud-gateway/src/main/resources/application.ymlglobalcors下放行*同样允许凭证微服务部署的统一放行层前端本地代理jeecgboot-vue3/vite.config.tsVITE_PROXY把/jeecg-boot等前缀转发到后端本地开发零跨域③ 三档环境分别怎么配本地开发改前端.env.development让 dev server 代为转发请求与页面同源浏览器根本不发预检。VITE_PROXY [ [/jeecg-boot, http://127.0.0.1:8080/jeecg-boot], [/prod-jeecg, http://127.0.0.1:8080/jeecg-boot], ]这段改了什么把接口前缀映射到本机后端端口浏览器看到的始终是同源地址跨域问题在源头消失。这一档的关键是让跨域根本不发生。内网测试微服务部署只改网关 yml 一处所有下游服务自动放行不用逐服务配置。spring: cloud: gateway: server: webflux: globalcors: cors-configurations: [/**]: allowed-origin-patterns: - http://192.168.10.*:3100这一段把*收窄到内网网段测试机换 IP 不用改网关外网永远进不来。这一档的关键是收口在网关。公网生产单体场景改 WebMvcConfiguration.java 中corsFilter()的放行项corsConfiguration.setAllowCredentials(true); corsConfiguration.addAllowedOriginPattern(https://your-domain.com); corsConfiguration.addAllowedMethod(HttpMethod.GET); corsConfiguration.addAllowedMethod(HttpMethod.POST); corsConfiguration.addAllowedHeader(Content-Type); corsConfiguration.addAllowedHeader(X-Access-Token); corsConfiguration.setMaxAge(3600L);这一档的关键是来源、方法、请求头全白名单并缓存预检一小时减少 OPTIONS 开销。④ 如何确认配置已生效对接口手动发 OPTIONS 预检带Origin和Access-Control-Request-Method: POST返回 200 且无响应体——预检被正确拦截而不是穿透进业务。查看正式响应头Access-Control-Allow-Origin的值等于你的前端域名配置了allowCredentials时这里不能是*。控制台 Network 里正式请求的 Status 从(blocked:corserror)变为 200登录、下拉字典等依赖X-Access-Token头的请求全部正常返回。换一台不在白名单内的机器访问预检直接失败、页面弹跨域错误——说明收紧确实生效不是没配。⑤ 反模式提醒❌setAllowCredentials(true)配addAllowedOrigin(*)浏览器直接拒绝 → ✅ 用addAllowedOriginPattern(具体域名)。❌ 微服务部署时逐个下游服务配 CORS与网关配置互相干扰 → ✅ 只改网关globalcors一处单体过滤器已由CorsFilterCondition自动跳过。❌ 只给 GET 放行了来源登录接口 POST 仍然 403 → ✅ 方法、请求头与来源一起收紧别漏X-Access-Token。放行规则对不对看响应头就清楚。延伸阅读配置类源码目录、网关配置 application.yml。【免费下载链接】jeecg-boot【低代码v2.0一句话即可生成整个系统】企业级AI低代码平台一键生成前后端代码甚至整个系统。 AI Skills 一句话画流程、设计表单、生成报表、大屏。内置 AI应用平台涵盖AI聊天、知识库、流程编排、MCP插件等兼容主流大模型。引领AI低代码「Skills 生成 → 在线配置 → 代码生成 → 手工合并-AI修改」开发模式解决 Java 项目 90% 重复工作提高效率又不失灵活。项目地址: https://gitcode.com/GitHub_Trending/je/jeecg-boot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表