none
ASP.Net Core и принудительный HTTPS RRS feed

  • Вопрос

  • Не работает принудительная переадресация на https. Опишу суть проблемы: Есть сайт написанный на ASP.Net Core 2.2, размещен на хостинге, при открытии ссылки http://security.netfreelancer.ru/ в некоторых браузерах открывается ссылка без переадресации на https. Про переадресацию читала тут. Добавила в код обе строчки:

    app.UseHsts();
    app.UseHttpsRedirection();
    Edge открывает ссылку как напишешь. Напишешь с http - откроет http, напишешь с https - откроет https. Как заставить чтоб всегда и любой браузер сайт открывался через https?

    30 августа 2019 г. 8:27

Ответы

  • Потому что 301-307 были введены RFC 7231, а 308 - более новым RFC 7538. Неизвестный 3ХХ код клиент воспринимает как 300 Multiple Choices и пытается показать список вариантов, которого нет. 
    • Помечено в качестве ответа Liliya Muray 2 сентября 2019 г. 8:31
    2 сентября 2019 г. 7:51
  • Направление было правильное. Проблема в том, что мой старенький андроид 4.2.2 совершенно не захотел дружить с кодом 308. Если эту строчку закомментировать, то по умолчанию пойдет код 307.

                services.AddHttpsRedirection(options =>
                {
                    //options.RedirectStatusCode = StatusCodes.Status308PermanentRedirect;
                    options.HttpsPort = 443;
                });
    Переход на https происходит, а метод запроса не может быть изменен с POST на GET (код 307). Для меня это пока выход, но хотелось бы узнать почему 307 прокатывает, а 308 приводит к пустому белому экрану на старом андроиде.

    • Помечено в качестве ответа Liliya Muray 2 сентября 2019 г. 7:14
    2 сентября 2019 г. 7:14

Все ответы

  • Нашла в чем проблема, нужно было настроить сервис HttpsRedirection. Добавила следующий код в ConfigureServices:

                services.AddHttpsRedirection(options =>
                {
                    options.RedirectStatusCode = StatusCodes.Status308PermanentRedirect;
                    options.HttpsPort = 443;
                });
    И всё заработало.

    • Помечено в качестве ответа Liliya Muray 30 августа 2019 г. 9:25
    • Снята пометка об ответе Liliya Muray 31 августа 2019 г. 7:17
    30 августа 2019 г. 9:25
  • Приветствую.

    Https это хорошо но сертификат для защищаемого сайта характеризует сайт и его владельца.

    Правильно использовать не фришные сертификаты к которым нет доверия у целевых клиентов, а Сертификаты выданные внешними коммерческими доверенными CA, к тому же цена из не так уж и велика от 50 вечнозеленых... 

    Удачи


    Я не волшебник, только учусь. MCTS, CCNA. Если Вам помог чей-либо ответ, пожалуйста, не забывайте нажать на кнопку "Отметить как ответ" или проголосовать за "полезное сообщение". Disclaimer: Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции работодателя. Вся информация предоставляется как есть, без каких-либо на то гарантий. Блог IT Инженера, Яндекс Дзен, YouTube, GitHub.

    30 августа 2019 г. 15:02
    Модератор
  • Приветствую.

    Https это хорошо но сертификат для защищаемого сайта характеризует сайт и его владельца.

    Правильно использовать не фришные сертификаты к которым нет доверия у целевых клиентов, а Сертификаты выданные внешними коммерческими доверенными CA, к тому же цена из не так уж и велика от 50 вечнозеленых... 

    Удачи

    Согласна, что к сертификату от более именитого CA больше доверия, но и фришные сертификаты по основным параметрам не сильно уступают. А если нет большой разницы, то зачем платить больше. Тем более фришный сам автоматом на хостинге обновляется.
    30 августа 2019 г. 15:55
  • Нашла в чем проблема, нужно было настроить сервис HttpsRedirection. Добавила следующий код в ConfigureServices:

                services.AddHttpsRedirection(options =>
                {
                    options.RedirectStatusCode = StatusCodes.Status308PermanentRedirect;
                    options.HttpsPort = 443;
                });
    И всё заработало.

    Заработало в браузере Edge. При тестах на мобилке с андроидом оказалось, что страница с http вообще перестала открываться, а если сразу указать https, то страница открывается.
    31 августа 2019 г. 7:38
  • Направление было правильное. Проблема в том, что мой старенький андроид 4.2.2 совершенно не захотел дружить с кодом 308. Если эту строчку закомментировать, то по умолчанию пойдет код 307.

                services.AddHttpsRedirection(options =>
                {
                    //options.RedirectStatusCode = StatusCodes.Status308PermanentRedirect;
                    options.HttpsPort = 443;
                });
    Переход на https происходит, а метод запроса не может быть изменен с POST на GET (код 307). Для меня это пока выход, но хотелось бы узнать почему 307 прокатывает, а 308 приводит к пустому белому экрану на старом андроиде.

    • Помечено в качестве ответа Liliya Muray 2 сентября 2019 г. 7:14
    2 сентября 2019 г. 7:14
  • Потому что 301-307 были введены RFC 7231, а 308 - более новым RFC 7538. Неизвестный 3ХХ код клиент воспринимает как 300 Multiple Choices и пытается показать список вариантов, которого нет. 
    • Помечено в качестве ответа Liliya Muray 2 сентября 2019 г. 8:31
    2 сентября 2019 г. 7:51