Nginx теряет переменную POST при перенаправлении http -> https

У меня есть сайт, который использует метод перенаправления...

server {
    listen 80;
    server_name example.org;
    return 301 https://$server_name$request_uri;
}

Однако, когда страница публикуется на " http://example.com/", она перенаправляется на " https://example.com/", и в процессе она удаляет POST.

Я понимаю, как это работает, однако мне нужно как-то сделать одно из следующего...

  • Выполните перенаправление с http -> https, не изменяя переменную POST
  • Преобразуйте переменную POST в переменную GET во время перенаправления (что будет работать нормально)
  • Перенаправить все, кроме одной папки

Какие-либо предложения? Я немного растерялся...

3 ответа

Решение

Если вы готовы отказаться от статуса "перманентного" перенаправления, я считаю, что перенаправление 307 вместо 301 сохранит POST. На самом деле существует перенаправление, которое является постоянным и сохраняет пост, 308, но оно еще не очень хорошо воспринято браузерами и другими пользовательскими агентами.

Переадресация 308 - это исправление, но решение состоит в том, чтобы POST напрямую к https:

  • публикуя на http, ваши данные не защищены
  • редирект замедляет процесс
  • если вы публикуете http с веб-страницы https, браузер может отобразить предупреждение для пользователя

Это общая проблема, и для нее нет простого решения.

Здесь есть несколько ответов с похожими вопросами

Apache 301 Redirect и сохранение почтовых данных

Можно ли перенаправить данные поста?

Возможно, один из ответов поможет решить вашу проблему

Другие вопросы по тегам