You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确配置CORS?仅允许http://localhost:3000访问Web应用

实现Nginx仅允许指定Origin访问的跨域配置

嘿,我看你已经找对了方向,用Nginx的$http_origin变量来匹配指定源,我帮你补全并优化这段配置,确保它能完美实现“仅接受http://localhost:3000请求”的需求。

完整的Nginx配置代码

location / {
    set $cors '';
    # 精确匹配允许的Origin,避免模糊匹配带来的安全风险
    if ($http_origin ~ '^http://localhost:3000$') {
        set $cors 'true';
    }
    # 识别浏览器发送的OPTIONS预检请求
    if ($request_method = 'OPTIONS') {
        set $cors "${cors}options";
    }
    # 为正常请求添加跨域响应头
    if ($cors = 'true') {
        add_header 'Access-Control-Allow-Origin' "$http_origin" always;
        add_header 'Access-Control-Allow-Credentials' 'true' always;
        add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS' always;
        add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization' always;
    }
    # 直接处理OPTIONS预检请求,返回204状态码(无需后端处理)
    if ($cors = 'trueoptions') {
        add_header 'Access-Control-Allow-Origin' "$http_origin" always;
        add_header 'Access-Control-Allow-Credentials' 'true' always;
        add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS' always;
        add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization' always;
        return 204;
    }
    # 这里替换成你原本的业务逻辑,比如反向代理到后端服务
    # proxy_pass http://your-backend-service;
    # 或者静态文件服务配置
    # root /path/to/your/static/files;
}

配置细节说明

  • 精确匹配Origin:用^http://localhost:3000$的正则表达式精确匹配,防止类似http://localhost:3000.attacker.com的恶意域名绕过限制。
  • 预检请求处理:浏览器在发送复杂跨域请求(比如带自定义请求头、PUT/DELETE方法)前,会先发送OPTIONS预检请求,这里专门处理这类请求,直接返回204状态码,减少后端服务的压力。
  • always关键字:确保跨域响应头在所有响应中都被添加,包括404、500等错误响应,避免前端因错误响应缺少跨域头而抛出异常。
  • 凭证支持:Access-Control-Allow-Credentials: true允许前端请求携带Cookie、HTTP认证信息等凭证,如果你的业务不需要,可以删除这一行,同时Access-Control-Allow-Origin也可以直接写死为http://localhost:3000。

后续操作

修改完配置后,记得重载Nginx使配置生效:

sudo nginx -s reload

内容的提问来源于stack exchange,提问作者Bilal Fazlani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:10:27