这与编程无关,但我在程序中使用它,所以我认为最好在这里问。本质上这是一个关于处理 HTTP 请求异常的问题。
标准请求可能如下所示:
GET / HTTP/1.1
Host: example.com
User-Agent: Firefox
我的问题是,HTTP 应该如何处理通常不会被篡改的 HTTP 请求部分中的“特殊字符”。例如,如果方法是“POST ME”而不是“GET”(即包含空格)怎么办?这会被编码为 %20 吗?
另一个例子,假设我希望我的一个标题是“Class:Test:example”,标题名称中有额外的“:”(标题值为“example”)。这会被编码为 %3A 吗?
注意:这不是关于是否有任何网络服务器会接受这种编码;这是关于它应该如何做的。我的程序是一个模糊测试器,所以它应该是测试这种东西!