V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rv54ntjwfm3ug8
V2EX  ›  Web Dev

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

  •  
  •   rv54ntjwfm3ug8 · 2022-01-21 20:58:11 +08:00 · 2932 次点击
    这是一个创建于 797 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    7 条回复    2022-01-22 15:44:30 +08:00
    Showfom
        1
    Showfom  
       2022-01-21 21:00:59 +08:00   ❤️ 3
    如果你需要获取统计信息,那么就别用 301 ,可以用 302 或 307

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

    现在流行 307

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

    308 Permanent Redirect

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

    用 303 的还真没见过
    learningman
        3
    learningman  
       2022-01-21 22:09:07 +08:00
    @Showfom #2 想问一下,服务器端返回 307 会生效吗,因为只在 HSTS 的跳转上见过 307
    jinliming2
        4
    jinliming2  
       2022-01-21 22:50:52 +08:00   ❤️ 3
    @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
        5
    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
        6
    liuxu  
       2022-01-22 00:30:57 +08:00
    301 浏览器会记住,http 跳 https 或者网站迁移才用,正常 302 通用
    bug123
        7
    bug123  
       2022-01-22 15:44:30 +08:00
    如果你是开发短网址,那就 302 跳转,别人的外链可以提高一部分排名。
    如果你是使用短网址的,那就 301 跳转。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5458 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 01:35 · PVG 09:35 · LAX 18:35 · JFK 21:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.