Использование перенаправлений 301/303/307 для динамических коротких URL - PullRequest
6 голосов
/ 26 января 2012

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

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

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

Ответы [ 2 ]

5 голосов
/ 26 января 2012

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#status.3xx

1 голос
/ 26 января 2012

Причина, по которой сервис сокращения 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 позже.

...