代码之家  ›  专栏  ›  技术社区  ›  Mark Cidade

当资源被禁止但有备用资源时,HTTP响应应该是什么?

  •  2
  • Mark Cidade  · 技术社区  · 16 年前

    如果我有一个资源,而请求客户机无权访问该资源,但我想通知他们另一个资源 有权限,我应该给他们发送一个 403 Forbidden 在头或内容中使用备用资源的URI?或者我应该发送一个 303 See Other 重定向到他们可以访问的资源?

    3 回复  |  直到 15 年前
        1
  •  1
  •   Thiago Figueiro John Mee    16 年前

    没有HTTP代码来表示“禁止,但请看一下这个”。

    但是,您可以自定义403错误页,以便提供指向其他内容的链接。如果有多个可选链接,您可能会发现此解决方案更好。

    如果通知用户访问被拒绝并不重要,您可能希望使用302(临时重定向),或者如果用户永远无法访问被禁止的内容,则使用301(永久重定向)。

        2
  •  1
  •   dmazzoni    16 年前

    如果一个人看到了错误页面,那么你选择的代码并不重要;如果有一条人类可读的错误消息;人们会忽略代码。

    问题是你想让机器做什么?您希望计算机在任何情况下自动重定向到可选内容吗?如果有合理的理由让某人以编程方式从您的站点获取页面,那么在这种情况下,他们应该获取替代内容吗?或者,如果有人正在使用缓存代理服务器,您是否希望它自动重定向?

    如果您不希望它在这种情况下自动重定向,那么403是正确的答案。如果你更希望人们得到正确的内容,只有真正好奇的用户才会关心原始内容是被禁止的,那么301或302就更有意义了。

        3
  •  0
  •   warren    16 年前

    http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

    我想你在300户人家里找东西。自动重定向看起来比403更友好。

    另外,403使对象看起来很有趣,可能需要更多的探测。