网站接收浏览器无效请求应返回400 Bad Request还是404 Not Found
针对无效请求HTTP返回码的选择建议
两个状态码的语义适配性说明
400 Bad Request的原生语义是请求本身存在格式/语法错误、不符合服务器的校验规则,完全匹配你提到的「URL参数无效」的场景,从HTTP协议规范层面是完全正确的选择。404 Not Found的原生语义是服务器无法定位请求对应的资源,如果你网站的id参数对应的就是具体的业务资源ID,无效参数等于对应资源不存在,返回404也完全符合协议要求,这也是很多网站选择这种实现的核心原因。
结合你的场景的选择建议
优先推荐返回404 Not Found,原因如下:
- 普通用户体验更好:你也提到浏览器默认会展示404的错误提示,用户能立刻明白页面不存在,不会对着空白的400默认页长时间困惑。你还可以自定义站点的404页面,增加返回首页、站点搜索、反馈入口这类引导,能大幅降低用户流失率。
- 无额外风险或成本:对恶意请求来说,返回404和400没有本质差异,不会增加安全风险;对你自己站点的跳转错误来说,带友好提示的404也比空白400页更能降低用户的困惑。
如果你坚持要严格遵循HTTP语义选择400 Bad Request,一定要自定义400返回页面,不要使用浏览器默认的空白页,避免给普通用户造成不必要的困扰。
内容的提问来源于stack exchange,提问作者Bob.at.Indigo.Health
相关产品推荐
相关产品推荐

