6

我们正在实施一个短网址服务,其中重定向目标每天都会改变。这些 url 将由移动设备访问,并且始终是 GET 请求。我试图了解哪个是最适合这项工作的 300 类型重定向。

AFAIK 大多数网址缩短服务使用 301 重定向(永久移动)。但是,根据规范,303(参见其他)和 307(临时移动)重定向似乎是为我们的案例设计的......

  • 303/307 是否与 301 一样受到支持?规范说它们只在 HTTP 1.1 中实现——这意味着什么限制?
  • 选择 301 与 303/307 是否有任何实际的缓存或性能影响。
  • 对于 GET 请求,是否有任何理由选择 303 和 307?
  • 有任何理由使用 302 重定向吗?
  • 还有什么需要考虑的吗?
4

2 回答 2

5

303/307 是否与 301 一样受到支持?规范说它们只在 HTTP 1.1 中实现——这意味着什么限制?

是/无。

选择 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

于 2012-01-26T08:37:58.460 回答
1

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 替换后者。

于 2012-01-26T08:48:31.643 回答