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

目录

📍 浏览器限制

📍 服务器限制


在大多数人的一贯认识中,一直认为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.mfbz.cn/a/100724.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

分布式锁实现二. memcached分布式锁

文章目录 memcached分布式锁实现原理:优缺点 开发准备安装memcached服务端安装jar到maven本地仓库 代码开发初始化Memcached客户端锁相关操作核心代码本地运行效果docker运行效果 memcached分布式锁 实现原理: memcached带有add函数,利用ad…

VScode 国内下载源 以及 nvm版本控制器下载与使用

VScode 国内下载源 进入官网 https://code.visualstudio.com/ 点击下载 复制下载链接到新的浏览器标签 将地址中的/stable前的az764295.vo.msecnd.net换成vscode.cdn.azure.cn,再回车就会直接在下载列表啦。 参考大神博客 2.使用nvm 对 node 和npm进行版本控制…

重装Windows10系统

以前清理电脑我一般是重置电脑的,但是重置电脑会清理C盘,新系统又遗留有以前的系统文件,导致后面配置环境遇到了棘手的问题,所以我打算重装系统。 第一次重装windows10系统,踩了很多坑,搞了两天才配回原来的…

Linux知识点 -- Linux多线程(四)

Linux知识点 – Linux多线程(四) 文章目录 Linux知识点 -- Linux多线程(四)一、线程池1.概念2.实现3.单例模式的线程池 二、STL、智能指针和线程安全1.STL的容器是否是线程安全的2.智能指针是否是线程安全的 三、其他常见的各种锁…

Mac移动硬盘怎么识别PC电脑?

如果你拥有一台Mac设备,总会遇到尴尬的那一刻——你在Mac上用得好好的移动硬盘怎么都不能被PC识别到。又或者你朋友在PC上用得好好的移动硬盘,连上你的Mac后,Mac里的文件死活就是拷贝不进移动硬盘里。这种坑,相信大多数使用Mac的小…

webpack(一)模块化

模块化演变过程 阶段一:基于文件的划分模块方式 概念:将每个功能和相关数据状态分别放在单独的文件里 约定每一个文件就是一个单独的模块,使用每个模块,直接调用这个模块的成员 缺点:所有的成员都可以在模块外被访问和…

Kubernetes(K8s)基本环境部署

此处只做学习使用,配置单master环境。 一、环境准备 1、ip主机规划(准备五台新机)>修改各个节点的主机名 注意:关闭防火墙与selinux 节点主机名ip身份joshua1 kubernetes-master.openlab.cn 192.168.134.151masterjoshua2k…

mysql与msql2数据驱动

mysql基本使用 数据库操作(DDL) -- 数据考操作 -- 1.查询所有数据库 SHOW DATABASES;-- 2.选择数据库 USE learn_mysql;-- 3.当前正在使用的数据库 SELECT DATABASE();-- 4.创建数据库 CREATE DATABASE IF NOT EXISTS learn_mysql;-- 5.删除数据库 DRO…

亚马逊,eBay,速卖通买家账号是如何实现高权重,高存活率的

现在测评,补单机构越来越多,看似寻常的便捷渠道也潜藏着很大的风险,尤其是当大量机器代替人工、各种质量参差不齐的测评机构被曝光,跨境卖家“踩坑遇骗”的情况也就屡屡出现。很多卖家都选择自己注册买家账号,自己做测…

【uniapp】 实现公共弹窗的封装以及调用

图例&#xff1a;红框区域为 “ 内容区域 ” 一、组件 <!-- 弹窗组件 --> <template> <view class"add_popup" v-if"person.isShowPopup"><view class"popup_cont" :style"{width:props.width&&props.width&…

面向对象的设计原则

设计模式 Python 设计模式&#xff1a;对软件设计中普遍存在&#xff08;反复出现&#xff09;的各种问题&#xff0c;所提出的解决方案。每一个设计模式系统地命名、解释和评价了面向对象系统中一个重要的和重复出现的设计 面向对象 三大特性&#xff1a;封装、继承、多态 …

电商平台api对接货源

如今&#xff0c;电商平台已经成为了人们购物的主要途径之一。 然而&#xff0c;对于电商平台来说&#xff0c;货源对接一直是一个比较棘手的问题。为了解决这个问题&#xff0c;越来越多的电商平台开始使用API来对接货源。 API&#xff0c;即应用程序接口&#xff0c;是一种允…

c++入门一

参考&#xff1a;https://www.learncpp.com/cpp-tutorial/ When you finish, you will not only know how to program in C, you will know how NOT to program in C, which is arguably as important. Tired or unhappy programmers make mistakes, and debugging code tends…

5G智能网关如何解决城市停车痛点难点

2023年上半年&#xff0c;我国汽车新注册登记1175万辆&#xff0c;同比增长5.8%&#xff0c;88个城市汽车保有量超过100万辆&#xff0c;北京、成都等24个城市超过300万辆。随着车辆保有量持续增加&#xff0c;停车难问题长期困扰城市居民&#xff0c;也导致城市路段违停普遍、…

无涯教程-JavaScript - POISSON函数

POISSON函数取代了Excel 2010中的POISSON.DIST函数。 描述 该函数返回泊松分布。泊松分布的常见应用是预测特定时间的事件数。 语法 POISSON(x,mean,cumulative)争论 Argument描述Required/OptionalXThe number of events.RequiredMeanThe expected numeric value.Require…

积跬步至千里 || 数学基础、算法与编程

数学基础、算法与编程 1. BAP 技能 BAP 技能是指基础(Basic)、算法(Algorithm)和编程(Programm)三种基本技能的深度融合。理工科以数学、算法与编程为根基&#xff0c;这三个相辅相成又各有区别。 &#xff08;1&#xff09;数学以线性代数为主要研究工具和部分微积分技术为手…

Unity RenderStreaming 云渲染-黑屏

&#x1f96a;云渲染-黑屏 网页加载出来了&#xff0c;点击播放黑屏 &#xff0c;关闭防火墙即可&#xff01;&#xff01;&#xff01;&#xff01;

HarmonyOS/OpenHarmony(Stage模型)应用开发单一手势(二)

三、拖动手势&#xff08;PanGesture&#xff09; .PanGestureOptions(value?:{ fingers?:number; direction?:PanDirection; distance?:number}) 拖动手势用于触发拖动手势事件&#xff0c;滑动达到最小滑动距离&#xff08;默认值为5vp&#xff09;时拖动手势识别成功&am…

c#多线程—基础概念到“双色球”项目实现(附知识点目录、代码、视频)

总结&#xff1a;视频中对于多线程讲的非常透彻&#xff0c;从线程基础概念—>.net不同版本出现的线程方法—>多线程常出现问题—>双色球项目实践&#xff0c;每个知识点都有代码实操&#xff0c;受益匪浅。附上学习笔记和实操代码。 视频 目录 一、线程、进程概念及优…

HarmonyOS—使用Web组件加载页面

页面加载是 Web 组件的基本功能。根据页面加载数据来源可以分为三种常用场景&#xff0c;包括加载网络页面、加载本地页面、加载 HTML 格式的富文本数据。 页面加载过程中&#xff0c;若涉及网络资源获取&#xff0c;需要配置ohos.permission.INTERNET网络访问权限。 加载网络…