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

使用 Nginx 轻松处理跨域请求(CORS)

配置 Nginx 解决 CORS 问题

在 Nginx 配置文件中添加以下指令,通常位于 serverlocation 块中。这些指令允许来自指定源的跨域请求,并处理预检请求(OPTIONS)。

add_header 'Access-Control-Allow-Origin' '$http_origin' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE' always;
add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization, X-Requested-With' always;
add_header 'Access-Control-Allow-Credentials' 'true' always;if ($request_method = 'OPTIONS') {return 204;
}

处理特定域名跨域

若需限制为特定域名而非所有来源($http_origin),可指定具体域名。多域名需通过变量或映射处理。

add_header 'Access-Control-Allow-Origin' 'https://example.com' always;

启用 CORS 预检缓存

通过 Access-Control-Max-Age 减少预检请求频率,提升性能。

add_header 'Access-Control-Max-Age' 86400;

完整示例配置

以下是一个完整的 location 块配置示例,适用于 API 接口路径:

location /api/ {proxy_pass http://backend;add_header 'Access-Control-Allow-Origin' '$http_origin' always;add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE' always;add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization' always;add_header 'Access-Control-Allow-Credentials' 'true' always;add_header 'Access-Control-Max-Age' 86400;if ($request_method = 'OPTIONS') {return 204;}
}

验证配置生效

重启 Nginx 后,可通过浏览器开发者工具检查响应头:

Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Allow-Headers: Content-Type

注意事项

  • 生产环境应避免使用通配符 *,明确指定可信域名。
  • 带凭证的请求(如 Cookie)需设置 Access-Control-Allow-Credentials: true,且不允许 Access-Control-Allow-Origin: *
  • 复杂 CORS 需求可结合 map 指令动态匹配来源。
http://www.dtcms.com/a/553643.html

相关文章:

  • 2025 年世界职业院校技能大赛机电设备安装与运维赛道备赛
  • 网站备案帐号用织梦做模板网站
  • 我的第一份工作:996
  • 贵州网推传媒有限公司企业网站seo优
  • 矿泉水除溴化物的解决方案
  • Bugku-Web题目-cookies
  • C# 类的方法介绍
  • 打破数据孤岛:制造行业档案管理方案如何实现数据互通与协同?
  • 加强 廉政网站建设衍艺网站建设
  • 中企高呈建设网站律师在哪个网站做推广好
  • 昆山非标设计工厂6名SolidWorks设计师共享一台服务器
  • 未来之窗昭和仙君(四十八)开发商品进销存修仙版——东方仙盟筑基期
  • 佛山设计网站浙江省国有建设用地出让网站
  • 跨厂商(华为 H3C)防火墙 GRE 隧道部署
  • 抖音网站单产品网站
  • 品牌网站源码江阴响应式网站建设
  • Java中wait和await的区别
  • DBeaver连接本地MySQL、创建数据库表的基础操作
  • 优秀网站首页设计上海网站建设定制公司
  • 不只是替代,更是升级:MEMS加速度计精准捕捉振动测量?
  • Kotlin协程 -> Flow和FlowCollector接口声明的意义
  • Postman接口测试: Postman环境变量全局变量设置,多接口顺序执行详解
  • 达梦数据库到Greenplum:用ETL工具实现数据仓库迁移
  • 建设网站需要注意什么问题中国铁建最新消息
  • 【Windows】Anaconda3-2025-x86_64的安装教程,使用【notebook】和【PyCharm】测试环境
  • Rust开发之使用match和if let处理Result错误
  • 九九重阳敬桑榆 众趣科技VR漫游让养老选择更安心
  • 什么是索引?索引对查询性能的影响?
  • 【ESP32 IDF】巴发云实现HTTP OTA功能
  • 会议室玻璃门秒装智能锁,还能对接多种会议预约APP