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

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

跨域资源共享(CORS)是现代Web开发中常见的挑战,但通过Nginx配置,我们可以轻松解决这个问题!🚀

为什么需要CORS?🤔

当你的前端应用(如`http://localhost:3000`)尝试访问不同域(如`http://api.example.com`)的资源时,浏览器出于安全考虑会阻止这种请求。这就是CORS机制的作用。

Nginx解决方案💡

只需在Nginx配置中添加几个指令,就能优雅地解决跨域问题:

```nginx
server{
listen80;
server_nameapi.example.com;

location/{
允许的源域名
add_header'Access-Control-Allow-Origin''http://localhost:3000';

允许的HTTP方法
add_header'Access-Control-Allow-Methods''GET,POST,OPTIONS,PUT,DELETE';

允许的请求头
add_header'Access-Control-Allow-Headers''Content-Type,Authorization';

允许浏览器缓存CORS配置(秒)
add_header'Access-Control-Max-Age'1728000;

处理预检请求(OPTIONS)
if($request_method='OPTIONS'){
return204;
}

你的其他代理配置...
proxy_passhttp://backend;
}
}
```

进阶配置🛠️

如果需要允许多个域名,可以使用变量:

```nginx
maphttp_origincors_origin{
default"";
"~^https?://(localhost|example.com|app.example.com)"$http_origin;
}

server{
...其他配置

add_header'Access-Control-Allow-Origin'$cors_origin;
add_header'Access-Control-Allow-Credentials''true';
}
```

验证配置✅

配置完成后,别忘了测试:
```bash
nginx-t测试配置语法
nginx-sreload重新加载配置
```

现在你的API就可以安全地被跨域访问啦!🎉记得根据实际需求调整配置,保持安全性和功能性的平衡。🔒➡️🔓

相关推荐
颜酱5 分钟前
# 02 | 搭骨架:用 LangGraph 编排 12 步工作流(思路)
前端·人工智能·后端
颜酱6 分钟前
02 | 搭骨架:用 LangGraph 编排 12 步工作流
前端·人工智能·后端
码上解惑8 分钟前
从 Dify 工作流说起:常用节点怎么选、怎样组合?
java·人工智能·ai·agent·dify·智能体·spring ai
青山木1 小时前
Hot 100 --- 岛屿数量
java·数据结构·算法·leetcode·深度优先·广度优先
嘉伟桑1 小时前
Python调用电价API返回JSON示例:分时电价、现货电价和字段解析
后端
程序员-珍1 小时前
报错下载android sdk失败
android·java
武子康1 小时前
Shippy:确定性工具、会话级 Sandbox 与 Live-Data Eval(4 类收敛 + 7 步实现方案 + 6 类评测指标)
前端·人工智能·后端
糖果店的幽灵1 小时前
langgraph分支之 - 动态分支(Dynamic Branch)
java·前端·javascript·人工智能·langgraph
我叫黑大帅2 小时前
我为什么单一消费者的场景下,要用 Redis List 当消息队列?
redis·后端·面试
吃饱了得干活2 小时前
亿级订单表分库分表设计,从0到1全流程
java·数据库·面试