我在nginx.conf
中具有以下内容:
header_filter_by_lua_block {
ngx.header["Access-Control-Allow-Origin"] = "http://example.com"
}
我想向http://example.dev
添加另一个Access-Control-Allow-Origin
。我尝试做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
内部还有其他方法吗?请帮忙。
答案 0 :(得分: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
}