你搞清楚了吗?| GET请求方式的长度限制到底是多少?

news2024/11/18 16:28:20

目录

📍 浏览器限制

📍 服务器限制


在大多数人的一贯认识中,一直认为get请求方式有2048B的长度限制,其实这种说法是有失偏颇的,甚至可以说是错误的。

这个问题一直以来似乎是被N多人误解,其实Http Get方法提交的数据大小长度并没有限制,而是IE浏览器本身对地址栏URL长度有最大长度限制:2048个字符。我们来看看权威官网的解释:

在HTTP规范RFC-2616中有这样一段描述,协议原文如下:

The HTTP protocol does not place any a priori limit on the length of a URI. Servers MUST be able to handle the URI of any resource they serve, and SHOULD be able to handle URIs of unbounded length if they provide GET- based forms that could generate such URIs. A server SHOULD return 414 (Request-URI Too Long) status if a URI is longer than the server can handle (see section 10.4.15).

Note: Servers ought to be cautious about depending on URI lengths above 255 bytes, because some older client or proxy implementations might not properly support these lengths.

翻译:

HTTP协议不对URI的长度作事先的限制,服务器必须能够处理任何他们提供资源的URI,并且应该能够处理无限长度的URIs,这种无效长度的URL可能会在客户端以基于GET方式的请求时产生。如果服务器不能处理太长的URI的时候,服务器应该返回414状态码(此状态码代表Request-URI太长)。

注:服务器在依赖大于255字节的URI时应谨慎,因为一些旧的客户或代理实现可能不支持这些长度。

从以上内容中可以看出,其实http 1.1 协议中对URL的长度是不受限制的,HTTP RFC规范中并没有规定GET请求的URI长度,只是说明如果server无法处理太长的URI,可以通过返回414状态码。

协议规范中虽然未对GET请求的url长度做出明确的限制规定,但是在主流的用户代理浏览器和应用服务器中对GET请求却做出限制或者相关的可配置。也就是说在真正实现中,url的长度还是受到限制的,一是服务器端的限制,二就是浏览器览器端的限制。

1、Http get方法提交的数据大小长度并没有限制,Http协议规范没有对URL长度进行限制

目前说的get长度有限制,是特定的浏览器及服务器对它的限制。各种浏览器和服务器的最大处理能力如下:

📍 浏览器限制

  • IE浏览器(Microsoft Internet Explorer) 对url长度限制是2083(2K+53)个字符,超过这个限制,则自动截断(若是form提交则提交按钮不起作用,没有任何反应)。

——以下是微软官方的一段说明:Internet Explorer 中的最大 URL 长度为 2,083 个字符

Microsoft Internet Explorer has a maximum uniform resource locator (URL) length of 2,083 characters. Internet Explorer also has a maximum path length of 2,048 characters. This limit applies to both POST request and GET request URLs.

If you are using the GET method, you are limited to a maximum of 2,048 characters, minus the number of characters in the actual path.

However, the POST method is not limited by the size of the URL for submitting name/value pairs. These pairs are transferred in the header and not in the URL. ‘>However, the POST method is not limited by the size of the URL for submitting name/value pairs. These pairs are transferred in the header and not in the URL.

RFC 2616, “Hypertext Transfer Protocol — HTTP/1.1,” does not specify any requirement for URL length.
-----------------------------------

摘要

Microsoft Internet Explorer 的最大统一资源定位器 (URL) 长度为 2,083 个字符。 Internet Explorer 的最大路径长度也为 2,048 个字符。 此限制适用于 POST 请求和 GET 请求 URL。

如果使用的是 GET 方法,则限制为最多 2,048 个字符,减去实际路径中的字符数。

但是,POST 方法不受提交名称/值对的 URL 大小的限制。 这些对在标头中传输,而不是在 URL 中传输。

RFC 2616,“超文本传输协议 -- HTTP/1.1”没有指定 URL 长度的任何要求。

参考

有关组件的进一步细分,请参阅 Wininet 标头文件。

有关详细信息,请参阅以下 Internet Social 网站中的 RFC 2616 第 3.2.1 节“超文本传输协议 -- HTTP/1.1”部分:ftp://ftp.isi.edu/in-notes/rfc2616.txt

  • Safari:url最大长度限制为80000个字符。

  • Opera:url最大长度限制为190000个字符。

  • Chrome:url最大长度限制为8182个字符。超过最大限制则服务器会返回上面列出的414错误。

  • Firefox:对Firefox浏览器url的长度限制为:65536个字符。

所以,大多数浏览器的限制在2k-8k之间,更老的版本浏览器甚至只支持255 bytes。

📍 服务器限制

  • Apache能接受url长度限制为8192字符

  • Microsoft Internet Information Server(IIS):n能接受最大url的长度为16384个字符。

  • tomcat中通过较多的Connector参数控制url长度限制:
    maxParameterCount:GET和POST请求参数个数,默认是10000
    maxPostSize:POST请求数据最大值

  • nginx可以通过修改配置来改变url请求串的url长度限制:
    client_header_buffer_size 默认值:1k
    large_client_header_buffers默认值:4k或8k

所以,大多数Web服务器的限制为8192字节(8KB),通常可以在服务器配置中的某个位置进行配置

2、理论上讲,post是没有大小限制的。Http协议规范也没有进行大小限制,起限制作用的是服务器处理程序的处理能力。

Tomcat下默认post长度为2M,可通过修改conf/server.xml中的“maxPostSize=0”来取消对post大小的限制。

◼️ 注意:(若长度超限,则服务端返回414标识)

1、首先即使有长度限制,也是限制的是整个URI长度,而不仅仅是你的参数值数据长度。

2、HTTP协议从未规定GET/POST的请求长度限制是多少

3、所谓的请求长度限制是由浏览器和web服务器决定和设置的,浏览器和web服务器的设定均不一样,这依赖于各个浏览器厂家的规定或者可以根据web服务器的处理能力来设定。


📋 参考资料:URL长度限制

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/419309.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2.3-3单链表的查找

按位查找: so easy (1)边界情况 i0 没有循环,直接返回头节点 (2)如果i8 当不合法,返回NULL. (3)普通情况i3;(平均时间复杂度为O(n)) 进行封装:避免重复,更加简洁更…

CRYSTALS-Dilithium

文章目录简介1和2版本区别2和3的区别1.介绍1.1基本方法概述密钥生成算法签名过程验证1.2Dilithium实现注意事项安全性。基础操作环操作模约简。元素的大小NTT域表示2.3 HashingsignatureGenζ ← {0,1}256\{{0, 1\}}^{256}{0,1}256(ρ, ρ, K) ∈ {0,1}256\{{0, 1\}}^{256}{0,1…

【springBoot篇2】springBoot日志篇

目录 一、日志有什么作用 作用1:快速定位问题的所在之处(最主要) 作用2:记录用户的登录日志 作用3:记录系统的操作日志 作用4:记录方法的执行时间 二、日志怎样使用 ①先得到日志对象(slf4j的Logger对象) ​​​编辑 ②根…

Python 无监督学习实用指南:1~5

原文:Hands-on unsupervised learning with Python 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 深度学习 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 不要担心自己的形象,只关…

docker运行服务端性能监控系统Prometheus和数据分析系统Grafana

文章目录一、Prometheus的安装和运行1、使用docker拉取镜像2、创建prometheus.yml文件3、启动容器4、查看启动是否成功5、记录安装过程中出现的错误二、Grafana的安装和运行1、使用docker拉取镜像2、创建grafana3、运行grafana4、查看grafana运行日志5、登录grafana一、Prometh…

学会了selenium 模拟鼠标操作,你就可以偷懒点点点了

目录:导读 前言 01.ActionChains 类常用方法 02.ActionChains 类所有方法 03.ActionChains 使用步骤 04.实战 05.总结 前言 我们在做 Web 自动化的时候,有时候页面的元素不需要我们点击,值需要把鼠标移动上去就能展示各种信息。 这个…

云服务器开启声音的办法

云服务器开启声音的办法 淘小云 云计算从业者,架构师 ​关注 云服务器没有声音是一件很烦恼的事情,那么今天小编给大家分享一下服务器开启声音的方法! 首先您需要先拥有一台windows系统的云服务器,小编这里以腾讯云服务器为例…

( “树” 之 DFS) 687. 最长同值路径 ——【Leetcode每日一题】

687. 最长同值路径 给定一个二叉树的 root ,返回 最长的路径的长度 ,这个路径中的 每个节点具有相同值 。 这条路径可以经过也可以不经过根节点。 两个节点之间的路径长度 由它们之间的边数表示。 示例 1: 输入:root [5,4,5,1,1,5] 输出&…

Loki采集Mysql errorlog,你值得拥有的错误日志聚合系统

说到分布式日志存储系统,大家肯定对ELK、EFK这些工具并不陌生。可是它们都基于Elasticsearch存储,搭建复杂,耗资源,上手难。所以,个人非常推崇Grafana Labs开源的Loki 轻量级日志聚合分析系统 Loki使用标签来作为索引…

java maven学习

我本身是个前端,目前Java都算是自学,为了直接能做Java服务端开发,我其实很多基础都没学,直接上项目做东西。现在来补充常用maven。避免以后出现低级错误。 一、依赖拉不下来解决步骤 1. 检查网络(最好检查&#xff09…

Flutter(六)可滚动组件

目录1.可滚动组件简介Sliver布局模型ScrollableViewportSliver可滚动组件的通用配置2.SingleChildScrollView3.ListView默认构造函数ListView.builderListView.separated固定高度列表ListView 原理无限加载列表,分页添加Header4.滚动监听及控制ScrollController滚动…

SpringCloud-Alibaba学习笔记01——Nacos介绍以及注册中心的演变和Nacos核心功能

文章参考自图灵大佬课程:https://www.bilibili.com/video/BV1fe4y1b7ha?p1&vd_source5f425e0074a7f92921f53ab87712357b 1.什么是Nacos 官方:一个更易于构建云原生应用的动态服务发现(Nacos Discovery )、服务配置(Nacos Config)和服务管理平台。 …

threejs 模型 世界坐标系和设备坐标系

前言 开发中遇到需求需要点击屏幕位置处,生成一个类似圆形弹窗面板,这个交互需要进行的坐标转换为模型坐标(局部坐标)>场景坐标(世界坐标)>标准设备坐标>屏幕空间坐标,也就是一个将3D…

开启分片支持需要如何去做?

开启分片支持 如果您计划使您的Javashop系统数据分片,请参考本文档进行相应的配置。 一、做好分片策略 在开始之前,您应该根据自己的业务情况准备好分片策略,包括: 1、要用几个数据库来分片 2、相应的表要分几张表 在本例&#x…

大数据 | 实验一:大数据系统基本实验 | MapReduce 初级编程

文章目录📚实验目的📚实验平台📚实验内容🐇编程实现文件的合并和去重🐇编程实现对输入文件的排序🐇对指定的表格进行信息挖掘📚实验目的 1)通过实验掌握基本的 MapReduce 编程方法。…

警惕“Money Message”勒索软件!数据安全不容忽视

近段时间,出现了一个名为“Money Message”的新型勒索软件,他们利用Money Message 病毒加密文件并以此向受害者勒索巨额赎金。 Money Message勒索软件是用 C编写,包含一个嵌入式JSON 配置文件,用于确定设备的加密方式。加密设备后…

小红书内容种草,曝光渠道分析总结

这是一个内容为王的时代,也是一个内容爆炸的时代。想要在以分享特色的小红书平台,实现内容种草,迅速出圈。今天来马文化传媒就从实操的角度,为大家带来小红书内容种草,曝光渠道分析总结的各种干货! 一、什…

关于图形界面Pyqt与QT的区别选择

关于图像界面(GUI)想必大家都并不陌生,想要将一段已经完善的功能列表进行可视化操作并且具有一定的操作空间,将功能可视化必不可少,一个好的可视化工具不仅可以集成一系列小的文件功能,还能将不同方法之间的…

ubuntu基本环境配置及mysql8.0.32和mysql workbench安装

ubuntu基本环境配置 文章目录ubuntu基本环境配置各种依赖包下载地址一、使用root账号进行远程连接二、防火墙相关设置2.1启用2.2开放和关闭端口数据库mysql安装(8.0.32)工具mysqlworkbench(8.0.32)各种依赖包下载地址 http://cn.archive.ubuntu.com/ubuntu/pool/main/liba/lib…

【1019. 链表中的下一个更大节点】

来源:力扣(LeetCode) 描述: 给定一个长度为 n 的链表 head 对于列表中的每个节点,查找下一个 更大节点 的值。也就是说,对于每个节点,找到它旁边的第一个节点的值,这个节点的值 严…