【问题标题】:How to add multiple origins in lua openresty nginx?如何在 lua openresty nginx 中添加多个来源?
【发布时间】:2019-09-18 20:14:20
【问题描述】:

我在nginx.conf中有以下内容:

header_filter_by_lua_block {
    ngx.header["Access-Control-Allow-Origin"] = "http://example.com"
}

我想在Access-Control-Allow-Origin 中添加另一个http://example.dev。我尝试过http://example.com, http://example.dev,但没有成功。

我也试过这样做:

if ($http_origin ~* "^http?://(example.com|example.dev)$") {
    add_header Access-Control-Allow-Origin "$http_origin";
}

但这在OPTIONS 请求中产生了一些问题,所以我真的不能使用它。在header_filter_by_lua_block 里面还有其他方法可以做吗?请帮忙。

【问题讨论】:

    标签: nginx lua openresty


    【解决方案1】:

    听起来推荐的方法是让您的服务器从客户端读取 Origin 标头,将其与您希望允许的域列表进行比较,如果匹配,则回显 Origin 标头的值作为响应中的 Access-Control-Allow-Origin 标头发送给客户端。

    (source)

    所以下面的代码应该可以解决你的问题。

    header_filter_by_lua_block {
      local origins = {
        ["http://example.com"] = true,
        ["http://example.dev"] = true
      }
      local origin = ngx.req.get_headers()["Origin"]  -- get request origin
    
      ngx.header["Access-Control-Allow-Origin"] = origins[origin] and origin or nil
    }
    

    【讨论】:

      猜你喜欢
      • 2021-03-10
      • 2020-12-20
      • 1970-01-01
      • 2021-07-31
      • 1970-01-01
      • 2019-06-18
      • 2018-01-31
      • 2021-05-15
      • 2013-11-28
      相关资源
      最近更新 更多