简短回答

简短回答

当我在网络浏览器中错误输入网页 URL 时,我偶然发现了这一点。

为什么访问会http://example.com/%导致抛出 HTTP 400 Bad Request 错误?服务器是否希望在百分号之后或之前输入其他内容?

这似乎发生在 Apache 和 Nginx 服务器上。

答案1

简短回答

按照RFC 3986,裸%字符不是有效的URI语法;它后面应该跟着两个有意义的十六进制数字。

长答案

HTTP您获得的状态代码属于以下4xx类别:

4xx: Client Error - The request contains bad syntax or cannot be fulfilled

来源:超文本传输​​协议 (HTTP) 状态代码注册表

具体来说,代码400互联网工程任务组(IETF)请求函数2616:

10.4.1 400 错误请求

由于语法错误,服务器无法理解请求。客户端不应在未做任何修改的情况下重复该请求。

来源:RFC 2616 - 超文本传输​​协议 - HTTP/1.1

引用维基百科(粗体强调是我的):

URI 中允许使用的字符包括预订的或者毫无保留或百分比字符作为百分比编码的一部分)。

来源:百分比编码 - URI 中的百分比编码

如果要插入文字%符号,则需要使用其百分比编码表示形式:%25

进一步阅读

答案2

百分号用于插入 URL 中通常不支持的字符。例如 %20 与空格相同。

相关内容