Почему срабатывает редирект https?

Я использую пустельгу/nginx с ядром asp.net. У меня есть некоторые URL-адреса, которым не требуется перенаправление https, поэтому у меня есть следующая конфигурация nginx

server {
    listen *:80;
    server_name     example.com *.example.com;

    location / {
        add_header Strict-Transport-Security max-age=15768000;
        return 301 https://example.com$request_uri;
    }

    location /DirectDownload/ {
        proxy_pass  http://example;
        limit_req   zone=one burst=10 nodelay;
    }
}

В Startup.cs у меня есть

  • ИспользоватьHsts()
  • НЕТ использованияHttpsRedirection()

Как ни странно, раньше это работало. К сожалению, в заголовке ответа не указано, какая часть моего приложения запускает перенаправление 307 hsts... Есть ли что-то очевидное, что я упускаю?

Это единственная :80 nginx conf.

Вот пример заголовков: введите здесь описание изображения

Спасибо за вашу помощь!


person Doidel    schedule 22.09.2019    source источник
comment
Проверьте принятый ответ здесь: stackoverflow.com /вопросы/34108241/   -  person Dmitry    schedule 23.09.2019
comment
Вы действительно все еще хотите использовать HTTP в 2019 году, когда большинство браузеров будут помечать http-страницы как небезопасные (что, с другой стороны, отпугнет ваших пользователей). Http проблематичен, даже если он не требуется (например, когда вы смешали http и https в своем html-коде). Смысл HSTS в том, чтобы запретить браузеру даже вызывать http (до того, как пользователь обычно перенаправляет его). У вас действительно так много трафика, что это вызывает у вас серьезные проблемы? Если это так, CDN могут быть вашими лучшими вариантами.   -  person Tseng    schedule 23.09.2019
comment
Также HSTS имеет очень агрессивное кэширование, если вы применили его один раз, оно останется до истечения срока действия (обычно 1 год по умолчанию).   -  person Tseng    schedule 23.09.2019
comment
@Tseng нет, дело не в производительности. Некоторые загрузки предоставляются для электронных книг Tolino (с Chrome v30). Все файлы, которые приходят по https, повреждены - это ошибка. И если я хочу поддерживать электронную книгу Tolino, я должен обойти https остальной части сайта.   -  person Doidel    schedule 23.09.2019


Ответы (1)


HSTS применяется ко всему серверу

https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security

Политика HSTS передается сервером пользовательскому агенту через поле заголовка ответа HTTPS с именем «Strict-Transport-Security».[1] Политика HSTS определяет период времени, в течение которого пользовательский агент должен обращаться к серверу только безопасным способом.[2] Веб-сайт, использующий HSTS, никогда не должен принимать открытый текст HTTP и либо не подключаться через HTTP, либо систематически перенаправлять пользователей на HTTPS. Следствием этого является то, что пользовательский агент, не способный выполнять TLS, больше не сможет подключиться к сайту.

Ответ 307 поступает непосредственно от Chrome: https://www.troyhunt.com/understanding-http-strict-transport/

Это Chrome говорит: «Я даже не собираюсь отправлять этот запрос, вместо этого я собираюсь изменить его на HTTPS, а затем повторить попытку», что дает нам второй запрос. Это ключ: Chrome отказался выдавать первый запрос по небезопасному протоколу HTTP.

person Drew Delano    schedule 22.09.2019
comment
О, хм, это отстой. Поэтому, чтобы обеспечить регулярную загрузку https в некоторых конкретных случаях, я думаю, что мог бы работать с субдоменами и исключать субдомен. Спасибо! - person Doidel; 23.09.2019