2

我正在编写一个控制器助手,为我的 REST 控制器操作设置正确的响应标头。它粘贴在下面,应该足够简化,以便那些不熟悉 Zend Framework 的人理解我在做什么。

我的问题是:这些代码对于它们各自的响应是否正确,在“拒绝访问”的情况下,我使用 401 还是 403?

此外,如果响应错误,我知道我应该在响应正文中放置一条消息,但我应该将“Content-Type”设置为“text/plain”吗?

<?php

class App_Controller_Helper_RestResponse extends Zend_Controller_Action_Helper_Abstract
{
    public function denied()
    {
        // 403 or 401?
    }

    public function notFound()
    {
        // 404
    }

    public function created()
    {
        // 201
    }

    public function deleted()
    {
        // 204
    }


    public function redirect()
    {
        // 301
        // new url
    }

    public function malformed()
    {
        // 400
    }

    public function gone()
    {
        // 410
    }


}
4

1 回答 1

0

这些对我来说看起来不错,我倾向于使用 200 来删除,但如果您在处理删除时永远不会发回任何实体,我认为使用 204 没有任何问题。关于 401 与 403,它们很棘手,因为它们的命名很差。401 表示“未经授权”,但发送 WWW-Authenticate 标头的要求向我表明,当请求未“经过身份验证”时,应该真正使用它。401 说:“我不能让你这样做,因为我不满意我对你的了解足够多。另一方面,403 表示资源是“禁止的”,只是在这种情况下表示“未授权”的另一种方式,没有努力让用户得到比他们现在更好的身份验证。当你需要表达:“我知道你是谁,我不在乎,我”时使用 403

否则,这些看起来不错,尽管您可能希望将 302、303 和 307 视为附加重定向,具体取决于您进行重定向的原因。再看一下http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html如果您需要更多有关重定向标头的信息,请告诉我。

于 2010-05-12T01:35:07.130 回答