前端到后端请求中的URL长度限制和查询参数约束

问题描述 投票:0回答:1

在开发前端请求后端的机制时,遇到了携带多个查询参数时URL长度的问题。 URL 有长度限制吗?如果是的话,极限到底是多少?此外,单个请求中可以发送的查询参数是否有最大数量?我正在寻找解决这些问题的相关标准或文档,并且也希望了解浏览器和服务器施加的不同限制。

我尝试过的:

查看浏览器文档:我检查了 Chrome 和 Firefox 等浏览器的文档,发现大多数现代浏览器支持最多大约 2000 个字符的 URL。然而,我找不到一个明确的标准。 检查服务器文档:我查看了 Apache 和 IIS 等服务器的官方文档。 Apache 的默认 URL 长度限制为 8192 个字符 (8KB),IIS 的默认限制为 16384 个字符 (16KB)。尽管如此,我仍然需要确定最佳实践。 实际测试:我在实际项目中进行了一些测试,发现很长的URL会导致请求失败,但具体原因和标准尚不清楚。

我在寻找什么:

我希望得到以下问题的明确答案:

URL 长度限制是多少?不同的浏览器和服务器是否有特定的限制? 单个请求中最多可以发送多少个查询参数? 有相关标准或参考文件可以参考吗?

javascript http url backend query-string
1个回答
0
投票

我今天对各种浏览器做了一些测试,发现现代浏览器至少支持 65,536 个字符的 URI 长度。我测试了一个 65,508 字节的

GET
变量 (
https://www.example.com/?test=[laksdjfklasjdfklajf...]
) 并回显了 Django 的
runserver
的长度,以查看以下每个浏览器组合是否支持完整长度(在 Django 中,
print(len(request.GET.get("test", "")))
)。

正如您所注意到的,您的网络服务器可能必须配置为支持此长度。您可以在 Apache 的配置中通过将指令更改为

LimitRequestLine 65546
来完成此操作。

BRAVE ON WINDOWS: 65508 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36

EDGE ON WINDOWS: 65508 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36 Edg/129.0.0.0

FIREFOX ON WINDOWS: 65508 Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:132.0) Gecko/20100101 Firefox/132.0

BRAVE ON MAC: 65508 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36

FIREFOX ON MAC: 65508 Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:130.0) Gecko/20100101 Firefox/130.0

SAFARI ON MAC: 65508 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.6 Safari/605.1.15

我没有找到任何不支持低于 Django

runserver
65,536 个字符 URI 限制的现代浏览器,并且我没有在 Linux 上进行测试。

© www.soinside.com 2019 - 2024. All rights reserved.