栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

nginx 正则处理跨域请求

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/962335.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号