Http 为什么GET中的字符总数是有限的?

Http 为什么GET中的字符总数是有限的?,http,http-get,Http,Http Get,我想问一些关于以下摘自Head First Servlets和JSP第二版书的引文的问题: GET中的字符总数实际上是有限的,这取决于 在服务器上。比如说,如果用户输入一段很长的“搜索” 输入框中,GET可能无法工作 为什么GET中的字符总数是有限的? 如何了解Get中的字符总数? 当我说长文本进入任何输入框时,GET不起作用。 我需要多少解决方案来解决这个问题 为什么get方法受到限制? “get”-数据以查询字符串的形式发送,该字符串也具有最大长度 您可以使用查询字符串执行各种操作,例如为其

我想问一些关于以下摘自Head First Servlets和JSP第二版书的引文的问题:

GET中的字符总数实际上是有限的,这取决于 在服务器上。比如说,如果用户输入一段很长的“搜索” 输入框中,GET可能无法工作

为什么GET中的字符总数是有限的? 如何了解Get中的字符总数? 当我说长文本进入任何输入框时,GET不起作用。 我需要多少解决方案来解决这个问题

为什么get方法受到限制?
“get”-数据以查询字符串的形式发送,该字符串也具有最大长度

您可以使用查询字符串执行各种操作,例如为其添加书签。你真的想把一个巨大的文本加入书签吗

可以将moste服务器配置为使用更大的长度-一些客户端会接受它们,一些会抛出错误

注意:服务器在依赖超过255字节的URI长度时应该谨慎,因为一些旧的客户端或代理实现可能无法正确支持这些长度。HTTP 1.1规范第3.2.1章:

还有一个状态码414请求URI太长-如果你得到这个,你就会知道你在get中放了很多字符。如果达到服务器限制,如果客户端限制低于服务器限制,则每个浏览器将以自己的方式作出反应


通常,明智的做法是为发送到服务器的每个数据设置一个限制-仅当有人试图造成巨大的工作负载或降低服务器速度时,例如发送一个巨大的文件-使用1服务器连接。放慢传输速度,进行额外的发送-在某个时候服务器将打开很多连接。使用多个客户端时,服务器上会出现攻击场景。

GET请求的长度没有特定限制。不同的服务器可以有不同的限制。如果需要向服务器发送更多数据,请使用POST而不是GET。服务器和浏览器支持的建议最小值为8000字节,但这不是必需的

RFC 7230表示

HTTP没有对请求行的长度设置预定义的限制,如第2.5节所述。接收比其实现的任何方法都长的方法的服务器应使用501未实现状态代码进行响应。如果服务器接收的请求目标比它希望解析的任何URI都长,则必须使用414 URI过长的状态代码进行响应。请参阅RFC7231的第6.5.12节

在实践中,发现了请求行长度的各种特殊限制。建议所有HTTP发送方和接收方至少支持8000个八位字节的请求行长度

HTTP对其许多协议元素没有特定的长度限制,因为根据部署上下文和实现目的,合适的长度可能会有很大的差异。因此,发送方和接收方之间的互操作性取决于对每个协议元素的合理长度的共同期望。此外,在过去二十年的HTTP使用过程中,通常被理解为某些协议元素的合理长度已经发生了变化,预计未来还会继续变化

而RFC 7231说

414 URI太长的状态代码表示服务器正在运行 拒绝服务请求,因为请求目标部分 [RFC7230]的5.3比服务器愿意解释的长度长。 这种罕见的情况只有在客户端 不正确地将POST请求转换为具有长查询的GET请求 信息,当客户已跌入 重定向,例如,指向以下后缀的重定向URI前缀: 或当服务器受到试图 利用潜在的安全漏洞