Регулярное выражение nginx с ошибкой захвата
Я пытаюсь использовать функции захвата регулярных выражений для создания Access-Control-Origin header
,
Итак, у вас есть два основных захвата, один для адреса веб-сайта (например,http://example.com
) и другое для пользователя порта (например, :4200
).
Идея заключается в следующем заголовке: Origin: http://example.com:4200
Мой захват работает для первого случая, но, похоже, порт не нравится.
я получил Origin : http://example.com:
вместо Origin: http://example.com:4200
Вот мой конфиг nginx:
Я предполагаю, что Access-Control-Allow-Origin
не занижайте числовое значение.
if ($request_uri ~ ^/api/blabla/*){
set $public "1";
}
if ($http_origin ~* (https?:\/\/[^/]*(localhost|\.example.com))(:[0-9]+)?[^\w\d]) {
set $public "${public}1";
}
if ($public = "11"){
set $http_origin_regex $1$4;
add_header 'Access-Control-Allow-Origin' "$http_origin_regex";
}
1 ответ
Посмотрите на http://marcel.zurreck.com/enable-cross-origin-requests-cors-nginx/
используя их синтаксис, я получил:
location ~ ^/api/blabla/ {
if ($http_origin ~* (https?://[^/]*(localhost|\.example\.com)(:[0-9]+)?)) {
add_header 'Access-Control-Allow-Origin' "$http_origin";
}
}