当前位置: 首页 > news >正文

一些开发时解决跨域问题(CORS)的方法

在作前后端分离的web项目时,经常会遇到一些跨域问题,以下是我总结的一些跨域方法

1.后端配置

1.java(springboot)解决

第一种:使用@CrossOrigin解决,该方法简单灵活但配置不够集中统一,但只在局部有效,在大型应用中稍显吃力

@CrossOrigin(//允许跨域的urlorigins="http://localhost:3000",//允许接受的请求方法methods={RequestMethod.GET,RequestMethod.POST,RequestMethod.PUT},//允许的请求头allowedHeaders="*",//允许的预检请求的缓存时间maxAge=3600)

第二种:使用WebMvcConfigurer接口解决,该方法为全局配置

importorg.springframework.context.annotation.Configuration;importorg.springframework.web.servlet.config.annotation.CorsRegistry;importorg.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration//声明配置类publicclassGlobalCorsConfigimplementsWebMvcConfigurer{@OverridepublicvoidaddCorsMappings(CorsRegistryregistry){registry.addMapping("/api/**")// 对所有 /api/ 开头的路径生效.allowedOrigins("http://localhost:3000")// 允许跨域的url.allowedMethods("GET","POST","PUT","DELETE","OPTIONS")// 允许的请求方法.allowedHeaders("*")// 允许所有请求头(可以更改).allowCredentials(true)// 允许携带 Cookie 等凭证.maxAge(3600);// 预检请求缓存时间}}

2.Node.js

首先安装依赖

npmi corsnpmi express

然后进行配置

constexpress=require('express');//导入express包constcors=require('cors');// 导入 cors 包constapp=express();// 只允许特定域名(相当于 allowedOrigins("http://localhost:3000"))constcorsOptions={origin:'http://localhost:3000',credentials:true// 允许携带 Cookie};app.use(cors(corsOptions));//如果直接app.use(cors)代表允许所有url跨域

如果想要对单个接口进行跨域配置

// 只有这个接口允许跨域app.get('/api/public',cors(),(req,res)=>{res.json({msg:'允许'});});// 这个接口不允许跨域(如果没有全局 cors)app.get('/api/private',(req,res)=>{res.json({msg:'拒绝'});});

2.开发环境配置代理

vite进行配置

exportdefault{server:{proxy:{'/api':{target:'http://后端地址:8080',// 目标后端changeOrigin:true,// 修改请求头中的 Origin// rewrite: (path) => path.replace(/^\/api/, '') // 可选:路径重写}}}}
http://www.jsqmd.com/news/638054/

相关文章:

  • Wan2.2-I2V-A14B私有化部署完整指南:系统盘50G+数据盘40G配置解析
  • 40_终极落地Checklist:你的公司Agent是否真的会干活了
  • 2026 论文通关指南:10 大 AI 查重降重神器横评,Paperxie 领衔破解重复率与 AIGC 率双难题
  • 软件继承管理中的框架扩展点
  • Mysql(4)数据类型
  • 忍者像素绘卷:天界画坊Java面试题精讲:AI项目中的多线程与资源管理
  • ESP8266墨水屏项目避坑指南:从接线到局刷,搞定4.2寸e-paper的汉字显示
  • 5步搞定!BAAI/bge-m3+ChromaDB搭建语义搜索服务
  • 2026 论文通关全攻略:10 大 AI 查重降重神器,查重 + 降 AIGC 率一站式搞定
  • JavaScript跨平台OCR引擎:Tesseract.js实现浏览器与Node.js图像文字识别
  • Pixel Couplet Gen 从零部署教程:Ubuntu系统环境与依赖项全配置
  • StarUML6.3.0安装与汉化全攻略(2024最新版)
  • Python3.10环境搭建太麻烦?试试这个一键部署的Miniconda镜像
  • 实战OpenCore配置:从零构建黑苹果EFI的智能解决方案
  • Vue实战:打造智能视频播放器——倍速控制、音量调节、进度拖拽与AI字幕生成
  • vue3要点+面试题
  • 西门子200SMART PID温控实战:从配置到避坑(附加热棒控制案例)
  • Mirage Flow 生成精美技术图表描述:辅助科研论文与项目汇报
  • 基于cnn的yolov8+sar图像识别 sar建筑物旋转目标检测与部署
  • FUTURE POLICE在会议场景的落地:实时语音转写与多说话人区分
  • MySQL基础阶段学习-SQL语句篇
  • c语言第一个编译器是用什么语言写的?自举原理
  • Qwen3-TTS-Tokenizer-12Hz实战效果:多格式音频编解码案例分享
  • TMS320F28388D双核通信初探:用CPU2控制SCI和Modbus RTU可能吗?
  • DHTStable:工业级DHT温湿度传感器稳定驱动库
  • M2LOrder模型实战:赋能AIGC内容创作的情感一致性校验
  • JavaSE-02
  • ANIMATEDIFF PRO与Stable Diffusion整合:提升动画质量技巧
  • 告别复杂配置:Gemma-3-12B-IT图形化界面部署教程
  • 2026含金量高的财会行业证书排行。