Безопасно ли перенаправлять на один и тот же URL?

StackOverflow https://stackoverflow.com/questions/126345

  •  02-07-2019
  •  | 
  •  

Вопрос

У меня есть URL-адреса формы http://domain/image/⟨uuid⟩/42x42/some_name.png.Веб-сервер (nginx) настроен на поиск файла /some/path/image/⟨uuid⟩/thumbnail_42x42.png, и если он не существует, он отправляет URL-адрес на серверную часть (Django через mod_wsgi), которая затем генерирует миниатюру.Затем серверная часть отправляет перенаправление 302 на точно такой же URL, который был запрошен клиентом, с мыслью, что при этом втором запросе сервер заметит файл миниатюр и отправит его напрямую.

Вопрос в том, будет ли это работать со всеми браузерами?Пока тестирование не показало никаких проблем, но могу ли я быть уверен, что все пользовательские агенты истолкуют это так, как задумано?

Обновить: Позвольте мне прояснить ваше намерение.В настоящее время это работает следующим образом:

  1. Клиент запрашивает миниатюру изображения.
  2. Сервер видит, что файл не существует, поэтому пересылает запрос на серверную часть.
  3. Серверная часть создает эскиз и возвращает 302.
  4. Серверная часть освобождает все ресурсы, позволяя серверу предоставлять общий доступ к вновь созданному файлу текущим и последующим клиентам.

Серверная часть, обслуживающая вновь созданный образ, хуже по двум причинам:

  1. Необходимо создать два способа обработки одних и тех же данных;
  2. Сервер намного лучше справляется со статическим контентом.Что делать, если у клиента очень медленная ссылка?Серверная часть не отличается особой скоростью и экономичностью памяти, и хранение ее в памяти во время кормления клиента с ложечки может быть расточительным.

Поэтому я поддерживаю работу серверной части в течение минимального промежутка времени.

Обновление 2: Я был бы очень признателен за некоторые ссылки на RFC или мнения кого-то, кто имеет опыт работы с большим количеством браузеров.Все эти утвердительные ответы приятны, но они выглядят несколько безосновательными.

Это было полезно?

Решение

Если этого не произойдет, клиент сломлен.Большинство клиентов будут следовать циклам перенаправления до достижения максимального значения.Так что да, все должно быть в порядке до тех пор, пока ваш сервер не сгенерирует миниатюру по какой-либо причине.

Вместо этого вы могли бы изменить URL-адреса на http://domain/djangoapp/generate_thumbnail и это вернет миниатюру и соответствующий тип содержимого и так далее

Другие советы

Да, можно перенаправить на тот же URI, что и ранее.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top