Может кто-нибудь объяснить это?
У меня есть блок сервера nginx с этим фрагментом:
location / {
try_files $uri $uri/ /index.html;
}
По сути, я использую это для обслуживания Angular SPA. Работает хорошо и замечательно.
Теперь я хотел добавить заголовок Access-Control-Allow-Origin
к ответу. Таким образом, я изменил блок так:
location / {
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Max-Age' 1728000;
return 204;
}
if ($request_method = 'GET') {
add_header 'Access-Control-Allow-Origin' '*';
}
try_files $uri $uri/ /index.html;
}
Теперь, когда я получаю доступ к http://<application>.com
, я получаю страницу, и я могу переходить к подпрограммам, таким как http://<application>.com/some-page
. Но если я напрямую пытаюсь получить доступ к http://<application>.com/some-page
, я получаю nginx 404. Раньше такого не было. Если я закомментирую оператор if
для GET
, все вернется на круги своя.
Почему? Какое значение здесь имеет оператор if
?