说我想要返回403.以下哪项更好?
Response.StatusCode = 403;
Response.Status = "Forbidden";
或
Response.StatusCode = 403;
为什么StatusCode有一个单独的状态字符串?设置有什么影响?如果你把它设置为完全错误的东西会发生什么,例如: StatusCode = 403,Status =“OK”?
答案 0 :(得分:3)
不要使用Status
属性,不推荐使用StatusDescription
属性。
设置StatusCode
属性,如果您需要的描述与该状态代码关联的描述不同,则只设置StatusDescription
属性。
答案 1 :(得分:1)
我会回复这样的事情:
Request.CreateResponse(HttpStatusCode.OK)
最好使用HttpStatusCode常量。
无论如何,您始终可以手动设置StatusCode和Status以创建自定义代码和说明。
答案 2 :(得分:1)
正如Guffa在答案中所述,如果您不想使用W3C-defined defaults,请仅设置说明。
在大多数情况下,对大多数用户来说,设置它没有明显的效果。通常只是忽略描述,并且仅针对用户代理所显示的4xx和5xx错误代码,以防没有给出响应的主体。它确实出现在浏览器的日志和开发者控制台中,所以它不像是完全隐藏的。
有时候让错误更加冗长是一个好主意。例如,403
的默认文本为Forbidden
,但如果是这种情况,可以将其设置为403 Invalid user domain
- 它可能会使某些调试变得更容易,或者可以帮助支持部门。特别是对于像500这样的一般性错误,提供更多信息通常会更好,尽管不足以成为安全风险。此外,如果您有关于问题的额外信息,则应在正文中详细解释,而不是HTTP状态说明。
最后,回答最后一个问题 - 如果您发送403 OK
响应,任何内容都不会被烧毁,任何内容都不会爆炸,并且没有浏览器会崩溃。您可能只会毫无希望地混淆看到该消息的用户,这只是一件愚蠢的事情,就像在遇到磁盘空间问题时故意抛出SQLException
一样。浏览器只查看403并处理它,但用户不会是一个感恩的客户。