短链接跳转长链接 HTTP 状态码应该使用 301 302 还是 303?

2022-01-21 20:58:11 +08:00
 rv54ntjwfm3ug8

如果允许用户随时修改短链接指向地址是不是使用 301 不太合适?如果短链接在创建后不允许修改指向地址呢?

2977 次点击
所在节点    Web Dev
7 条回复
Showfom
2022-01-21 21:00:59 +08:00
如果你需要获取统计信息,那么就别用 301 ,可以用 302 或 307

如果你不需要获取统计信息,直接 301 完事了

现在流行 307

但该响应代码与 302 重定向有所区别的地方在于,收到 307 响应码后,客户端应保持请求方法不变向新的地址发出请求
Showfom
2022-01-21 21:02:05 +08:00
也有用 308 的

308 Permanent Redirect

请求和所有将来的请求应该使用另一个 URI 重复。307 和 308 重复 302 和 301 的行为,但不允许 HTTP 方法更改。 例如,将表单提交给永久重定向的资源可能会顺利进行

用 303 的还真没见过
learningman
2022-01-21 22:09:07 +08:00
@Showfom #2 想问一下,服务器端返回 307 会生效吗,因为只在 HSTS 的跳转上见过 307
jinliming2
2022-01-21 22:50:52 +08:00
@learningman 301 和 302 由 HTTP/1.0 引入,但部分浏览器对重定向后的请求方法实现不一致( GET 请求跳转后还是 GET ,但其他请求跳转之后有可能会变成 GET ,也有可能不变,取决于浏览器实现)
308 和 307 由 HTTP/1.1 引入,分别对应 301 和 302 ,但是标准化规定了重定向后的请求方法与原始方法一致,保持不变。
303 现在用的很少了,表示重定向后请求方法变为 GET 。通常是用在表单 POST 提交后重定向刷新页面的(以前用原始 form 表单直接 submit ,POST 提交到当前 url ,然后再重定向回当前 url ,服务端 url 一样,根据 method 来判断执行的操作,使用 303 重定向后方法会变回 GET )。不过现在基本上很少用 form 直接提交了,所以 303 用的就少了。

总的来说,就是部分浏览器把 301 、302 按照 303 来实现了,308 和 307 是用来纠正这个错误的。所以在 HTTP/1.1 之后是推荐使用更明确的 308 、307 了。HTTP/1.1 是 1999 年标准化的,所以可以理解是现在的客户端全部都支持的。

301 、308 表示永久重定向,所以浏览器会缓存目标地址响应,以后请求原地址在缓存有效的情况下都会直接自动转到新地址。
302 、307 表示临时重定向,所以浏览器不会缓存,以后访问原地址的时候还是会重新请求一下,看一下是否还需要跳转。
jinliming2
2022-01-21 23:09:33 +08:00
@jinliming2 啊,不对,补充一下,1999 年 6 月 标准化的 HTTP/1.1 ( RFC 2616 )只包含 307 状态码,用于标准化 302 的行为,但是没有给出 308 。
308 是 2014 年 6 月在 RFC7238 补充给 HTTP/1.1 的。
所以,308 的兼容性需要考虑一下。不过现在 2022 年了,主流浏览器是肯定都支持的。
liuxu
2022-01-22 00:30:57 +08:00
301 浏览器会记住,http 跳 https 或者网站迁移才用,正常 302 通用
bug123
2022-01-22 15:44:30 +08:00
如果你是开发短网址,那就 302 跳转,别人的外链可以提高一部分排名。
如果你是使用短网址的,那就 301 跳转。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/829811

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX