gpt4 book ai didi

http - HTTP 请求字段中的特殊字符

转载 作者:可可西里 更新时间:2023-11-01 17:11:32 27 4
gpt4 key购买 nike

这与编程无关,但我在程序中使用它,所以我认为最好在这里问一下。本质上这是一个关于处理 HTTP 请求异常的问题。

标准请求可能如下所示:

GET / HTTP/1.1
Host: example.com
User-Agent: Firefox

我的问题是,HTTP 应该如何处理 HTTP 请求中通常不会被篡改的部分中的“特殊字符”。例如,如果方法是“POST ME”而不是“GET”(即包含空格)怎么办?这会被编码为 %20 吗?

另一个例子,假设我希望我的一个 header 是“Class:Test:example”, header 名称中有额外的“:”( header 值为“example”)。这会被编码为 %3A 吗?

注意:这与是否有任何网络服务器会接受这种编码无关;这是关于应该如何做的。我的程序是一个模糊测试器,所以它应该测试这类东西!

最佳答案

这两个问题必须回答为“否”和“是的,但是...”

您建议的“百分比编码”是为内容、值定义的,而不是为 http 语言语法定义的。您混合使用协议(protocol)和有效负载。

您可能想看一下定义 HTTP 的 RFC。它清楚地定义了语法。如果您坚持使用该语法,则可以创建有效的扩展(这就是您想要做的)。如果您破坏该语法,您将创建无效的 http 请求。那是你可以在内部做的事情,但很可能这样的请求在开放的互联网上不起作用,例如代理发挥作用。这些必须在语法级别上理解您的请求。

我写道,对于问题 2,答案是“是的,但是”。所以对 BUT 说几句话:

如果您按照建议对第二个 ':' 进行编码,则您可以指定此类 header 并且它们是有效的。但是你应该明白你在那里做什么:你不是在标题名称中引入层次结构。相反,您指定标题内容以包含“:”。那很好。由您的服务器组件来理解、解释该内容并按预期使用react。

关于http - HTTP 请求字段中的特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11758225/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com