GET和POST传参长度和大小的区别

此文章的数据可能存在变动,但是原理是一样的。大家一定要记住下面这几句话:

 

1、HTTP 协议 未规定 GET 和POST的长度限制

2、GET的最大长度显示是因为 浏览器和 web服务器限制了 URI的长度

3、不同的浏览器和WEB服务器,限制的GET最大长度不一样

4、POST默认不受大小的限制,有限制也是因为服务器做了相应的设置

 

注意:通常来讲,GET传参长度,POST值大小;一定不要被文字绕晕。

 

GET

get是通过URL提交数据,因此GET可提交的数据量就跟URL所能达到的最大长度有直接关系。URL不存在参数上限的问题,HTTP协议规范也没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。(下面会计到各大浏览对GET的限制要求)即如果url太长,服务器可能会因为安全方面的设置从而拒绝请求或者发生不完整的数据请求。

 

POST

理论上讲是没有大小限制的,HTTP协议规范也没有进行大小限制,但实际上post所能传递的数据量大小取决于服务器的设置和内存大小。实际中如果你上传文件的过程中可能会发现这样一个问题,即上传个头比较大的文件到服务器时候,可能上传不上去。

 

以php语言来说,查原因的时候你也许会看到有说PHP上传文件涉及到的参数PHP默认的上传有限定,一般这个值是2MB,更改这个值需要更改php.ini的post_max_size这个值。

 

php.ini配置文件中的默认文件上传大小为2M, 默认upload_max_filesize =2M,即文件上传的大小为2M,如果你想上传超过8M的文件,比如20M,你必须设定upload_max_filesize =20M。同时必须修改php.ini配置文件中的post_max_size选项,其代表允许POST的数据最大字节长度,默认为8M。如果POST数据超出限制,那么$_POST和$_FILES将会为空。要上传大文件,你必须设定该选项值大于upload_max_filesize指令的值。另外如果启用了内存限制,那么该值应当小于memory_limit选项的值。

 

下面是我一位朋友用PHP,curl模拟get传参报错的两张图片:

 

curl模拟get传参

 

curl模拟get传参报错

 

下面具体用数据来探讨一下,首先我们需要知道以下几个计算公式:

1GB=1024MB

1MB=1024KB

1KB=1024字节

1字节=8位

 

浏览器对GET限制长度的大小

 

1、IE

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

 

2、firefox

firefox(火狐浏览器)的url长度限制为 65 536字符,但实际上有效的URL最大长度不少于100,000个字符。

 

3、chrome

chrome(谷歌)的url长度限制超过8182个字符返回本文开头时列出的错误。

 

4、Safari

Safari的url长度限制至少为 80 000 字符。

 

5、Opera

Opera 浏览器的url长度限制为190 000 字符。Opera 9 地址栏中输入190 000字符时依然能正常编辑。

 

服务器对GET限制长度的大小:

 

1、Apache

Apache能接受url长度限制为8 192 字符

 

2、IIS

Microsoft Internet Information Server(IIS)能接受url长度限制为16 384个字符。

这个是可以通过修改的(IIS7)。

 

3、Perl HTTP::Daemon

Perl HTTP::Daemon 至少可以接受url长度限制为8000字符。Perl HTTP::Daemon中限制HTTP request headers的总长度不超过16 384字节(不包括post,file uploads等)。但当url超过8000字符时会返回413错误。

这个限制可以被修改,在Daemon.pm查找16×1024并更改成更大的值。

 

4、ngnix

可以通过修改配置来改变url请求串的url长度限制。

client_header_buffer_size 默认值:client_header_buffer_size 1k

large_client_header_buffers默认值 :large_client_header_buffers 4 4k/8k

    A+
发布日期:2017年09月25日 19:29:28  所属分类:PHP
最后更新时间:2017-09-25 19:36:55
评分: (当前没有评级)
付杰
PHP运行环境 wamp lamp lnmp 安装 配置 搭建服务
PHP运行环境 wamp lamp lnmp 安装 配置 搭建服务
  • ¥ 9.9元
  • 市场价:49.9元
服务器管理面板/主机控制面板“安装”服务
服务器管理面板/主机控制面板“安装”服务
  • ¥ 9.9元
  • 市场价:49.9元
wp discux 帝国 dedecms phpcms等快速建站
wp discux 帝国 dedecms phpcms等快速建站
  • ¥ 99.9元
  • 市场价:499.9元
SEO顾问服务 中小型网站 单站/最低99.9元 全方位优化
SEO顾问服务 中小型网站 单站/最低99.9元 全方位优化
  • ¥ 99.9元
  • 市场价:5000元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: