Использование перенаправления 301/303/307 для динамических коротких URL

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

AFAIK большинство сервисов сокращения URL используют 301 переадресацию (перемещено навсегда). Однако, согласно спецификациям, редиректы 303 (см. Другие) и 307 (временно перенесены) выглядят так, как будто они предназначены для нашего случая...

  • 303/307 также поддерживаются как 301? Спецификации говорят, что они были реализованы только в HTTP 1.1- с какими ограничениями это связано?
  • Существуют ли какие-либо фактические последствия для кэширования или производительности при выборе 301 против 303/307.
  • Для запросов GET есть ли причина выбирать 303 против 307?
  • Есть ли причина использовать 302 редиректа?
  • Любые другие вещи, чтобы рассмотреть?

2 ответа

Решение

303/307 также поддерживаются как 301? Спецификации говорят, что они были реализованы только в HTTP 1.1- с какими ограничениями это связано?

Да /None.

Существуют ли какие-либо фактические последствия для кэширования или производительности при выборе 301 против 303/307.

Я так не думаю.

Для запросов GET есть ли причина выбирать 303 против 307?

303 имеет семантику, отличную от 307. Если запрашиваемый ресурс "где-то еще", 303 не является правильным ответом.

Есть ли причина использовать 302 редиректа?

Не совсем, насколько я могу судить. Он имеет ту же семантику, что и 307, но UA может переписать запрос POST в GET.

Любые другие вещи, чтобы рассмотреть?

См. http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p2-semantics-18.html

Причина, по которой сервис сокращения URL-адресов использует 301 (постоянный):

  • Он не содержит рейтинг страницы целевого URL.
  • URL-адрес назначения не изменяется (когда вы сообщаете bit.ly/url1 о перенаправлении на example.com/url1, вы не можете изменить его для перенаправления на example.com/url2).

Все 302, 303 и 307 являются временными перенаправлениями и просто не выполняют работу. За исключением того, что если вы хотите изменить целевой URL, вы можете использовать 302. Например, example.com/contact перенаправляет на example.com/temp/contact, но вы намереваетесь заменить последний на example.com/v2/contact позже.

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