nginx 正则处理跨域请求

场景模拟,现在只允许所有的 a.com 和b.com 的跨域请求

一、nginx直接处理options请求(跨域预检)

nginx直接返回options请求的优点

1、可以在nginx层面控制options配置,方便管理

2、在nginx处理可以减少后端服务器的压力

location 下使用set if 匹配options 返回对应的请求头

set $cors_origin "";
    if ($http_origin ~* ^https?://(.*\.)?(a.com|b.com)) {
    set $cors_origin $http_origin;
    }
   if ($request_method = 'OPTIONS') {
    add_header Access-Control-Allow-Origin $cors_origin;
    add_header Access-Control-Allow-Credentials true;
    add_header Access-Control-Allow-Methods GET,HEAD,POST,OPTIONS;
    add_header Access-Control-Allow-Headers $http_access_control_request_headers;
    add_header Allow GET,HEAD,POST,OPTIONS;
    add_header Access-Control-Max-Age 3600;
    return 200;
}

二、nginx在上游响应的头部增加跨域的请求头

location 下匹配域名增加对应域名的请求头

if ($http_origin ~ ^https?://(.*\.)?(a.com|b.com)){
        add_header Access-Control-Allow-Origin $http_origin;
   }

三、全局使用map 声明跨域的返回值(这个可以更加灵活的使用变量和nginx别的配置)

map配置声明cors_origin 的值,需要结合别的配置增加跨域请求头的配置

map $http_origin $cors_origin {
default  "";
^https?://(.*\.)?(a.com|b.com) $http_origin;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值