如何解决在“未经身份验证”和“未经授权”的情况下使用什么HTTP代码?
| 我读到以下用户必须使用\“ 401未经授权\”代码: 未记录,但需要登录(\“未验证\”); 已登录,但他的个人资料不允许看到该网址(\“未授权\”); 根据RFC,在两种情况下,服务器都必须返回“ 0”代码。 但是我需要在我的ajax请求中加以区分。 有人提示解决此问题吗? 注意:根据RFC,我不想使用403 Forbidden
代码,因为在403\"Authorization will not help\"
中。
解决方法
除应满足特定于应用程序的状态代码的状态代码外,还应传递自定义标头。
我相信目前的做法是在自定义标题的开头加上ѭ3
2012年8月更新:
从注释中张贴的RFC 3864(日期为2004年9月)中:
在某些情况下(特别是HTTP [24]),标头语法和用法为
针对特定应用重新定义。
[...]
在某些情况下,相同的字段名称可能会以不同的方式指定(通过
不同的文档)以用于不同的应用协议。
[...]
我们需要容纳特定于应用程序的字段,同时希望
承认和促进(在适当情况下)其他领域的共同点
跨多个应用程序。
在更新的RFC(2012年6月,日期为6648)中,它们专门处理了3个标头。
不赞成在新定义的参数中使用\“ X- \”约定
应用协议,包括已建立的新参数
协议。 [...]不建议您反对私人做法,
本地的,初步的,实验的或特定于实现的
参数,仅反对使用\“ X- \”和类似的结构
此类参数的名称。
需要注意的重要一点是,虽然特别指出了“ 3”,但它们仍隐式纵容自定义标头,作为传输信息的一种方式。特定于应用程序的前缀(
MyApp-
)可能更适合避免与任何其他标头冲突。
另请参阅:几年前在HTTP响应中使用\“ X- \”标头是否安全?
,除非您打算使用HTTP身份验证,否则正确的响应是403(\“ Forbidden \”)。
响应码401触发浏览器显示密码对话框,然后使用带有用户提供的密码数据的“ 7”标题重新提交相同的请求。那可能不是您想要的行为。
不要太在意RFC中的解释-您真正需要注意的是各种响应代码对浏览器和搜索引擎的副作用。
至于“ 2”位,在这种情况下是正确的,因为实际上使用HTTP授权(特别是指“ 7”报头)将无济于事。
403响应告诉浏览器用户无权发出该请求,并且浏览器不应尝试收集身份验证数据并重新提交请求。这正是您所追求的。
,我相信403是正确的选择。我们可能需要调整规范中的语言以使其清楚。
,IIS通过子状态代码(参考)区分这些情况:
401 =用户尚未登录,但需要登录
401.1 =用户尝试登录,但其凭据无效。
401.3 =用户的凭据有效,但是用户无权查看资源。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。