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

时间:2008-10-14 01:43:44

标签: http rest http-headers

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

3 个答案:

答案 0 :(得分:1)

“forbidden”没有HTTP代码,但看看这个。

但是,您可以自定义403错误页面,以便显示指向备用内容的链接。如果您有多个替代链接,您可能会更好地找到此解决方案。

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

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

我认为你正在寻找300家庭的东西。自动重定向似乎比403更友好。

另外,403使对象看起来很有趣,并且可能会邀请更多的探测。