Как добавить несколько источников в lua openresty nginx?

У меня есть следующее в 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? Пожалуйста помоги.


person Damon    schedule 30.04.2019    source источник


Ответы (1)


Похоже, что рекомендуемый способ сделать это — заставить ваш сервер прочитать заголовок Origin от клиента, сравнить его со списком доменов, которые вы хотели бы разрешить, и, если он совпадает, отобразить значение заголовка Origin обратно клиенту. как заголовок Access-Control-Allow-Origin в ответе.

(источник)

Итак, следующий код должен решить вашу проблему.

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
}
person csaar    schedule 30.04.2019