关于URL最大长度限制的相关资料查证


Posted in PHP onDecember 23, 2014

在开发调试支付宝接口时,突然发现支付宝接口的URL很长,远远大于之前自己印象中的255个字符。赶紧搜索查证了一番,理解如下:

URL不能大于255bytes的说法确实存在,在RFC2616中提到:

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.

从上一点也可以看出,255bytes的说法也是为了兼容性考虑。实际上现代浏览器的限制如下:

Microsoft Internet Explorer (Browser) 

Microsoft states that the maximum length of a URL in Internet Explorer is 2,083 characters, with no more than 2,048 characters in the path portion of the URL. In my tests, attempts to use URLs longer than this produced a clear error message in Internet Explorer.
Firefox (Browser) 
After 65,536 characters, the location bar no longer displays the URL in Windows Firefox 1.5.x. However, longer URLs will work. I stopped testing after 100,000 characters.
Safari (Browser) 

At least 80,000 characters will work. I stopped testing after 80,000 characters.
Opera (Browser) 

At least 190,000 characters will work. I stopped testing after 190,000 characters. Opera 9 for Windows continued to display a fully editable, copyable and pasteable URL in the location bar even at 190,000 characters.
Apache (Server) 
My early attempts to measure the maximum URL length in web browsers bumped into a server URL length limit of approximately 4,000 characters, after which Apache produces a “413 Entity Too Large” error. I used the current up to date Apache build found in Red Hat Enterprise Linux 4. The official Apache documentation only mentions an 8,192-byte limit on an individual field in a request.
Microsoft Internet Information Server 
The default limit is 16,384 characters (yes, Microsoft's web server accepts longer URLs than Microsoft's web browser). This is configurable.
Perl HTTP::Daemon (Server) 

Up to 8,000 bytes will work. Those constructing web application servers with Perl's HTTP::Daemon module will encounter a 16,384 byte limit on the combined size of all HTTP request headers. This does not include POST-method form data, file uploads, etc., but it does include the URL. In practice this resulted in a 413 error when a URL was significantly longer than 8,000 characters. This limitation can be easily removed. Look for all occurrences of 16×1024 in Daemon.pm and replace them with a larger value. Of course, this does increase your exposure to denial of service attacks.

另外值得注意的是,有文章提到作为<a>的href属性时,URL不能超过1024bytes,这点没有详细查证

综上,URL还是不适合太长,不是不得已,尽量不要通过GET方式提交大量参数,可以考虑用POST方式(大约在2M左右,应该是和服务器及设定有关)。另外这么长的URL在访问和收藏(有文章提到有些浏览器在收藏超长地址时也是会出现问题)时也是相当不友好的。当然,之前数据库字段设置时还是作为255bytes处理,现在可能要考虑扩充一下了。

PHP 相关文章推荐
php checkbox 取值详细说明
Aug 19 PHP
探讨php中防止SQL注入最好的方法是什么
Jun 10 PHP
php.ini 配置文件的深入解析
Jun 17 PHP
PHP过滤★等特殊符号的正则
Jan 27 PHP
php数组查找函数总结
Nov 18 PHP
yii中widget的用法
Dec 03 PHP
php eval函数一句话木马代码
May 21 PHP
PHP登录验证码的实现与使用方法
Jul 07 PHP
使用WAMP搭建PHP本地开发环境
May 10 PHP
实例讲解YII2中多表关联的使用方法
Jul 21 PHP
PHP数组遍历的几种常见方式总结
Feb 15 PHP
php use和include区别总结
Oct 13 PHP
php实现基于微信公众平台开发SDK(demo)扩展的方法
Dec 22 #PHP
php微信公众开发之获取周边酒店信息的方法
Dec 22 #PHP
php天翼开放平台短信发送接口实现方法
Dec 22 #PHP
php进行支付宝开发中return_url和notify_url的区别分析
Dec 22 #PHP
WebQQ最新登陆协议的用法
Dec 22 #PHP
腾讯微博提示missing parameter errorcode 102 错误的解决方法
Dec 22 #PHP
php有道翻译api调用方法实例
Dec 22 #PHP
You might like
ADODB结合SMARTY使用~超级强
2006/11/25 PHP
PHP自定义函数获取URL中一级域名的方法
2016/08/23 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
2017/09/20 PHP
setInterval 和 setTimeout会产生内存溢出
2008/02/15 Javascript
IE6下通过a标签点击切换图片的问题
2010/11/14 Javascript
node.js实现多图片上传实例
2014/06/03 Javascript
使用javascript实现Iframe自适应高度
2014/12/24 Javascript
JS实现控制表格单元格垂直对齐的方法
2015/03/30 Javascript
JavaScript实现的背景自动变色代码
2015/10/17 Javascript
jquery UI Datepicker时间控件的使用方法(加强版)
2015/11/07 Javascript
jQuery实现图片向左向右切换效果的简单实例
2016/05/18 Javascript
初识简单却不失优雅的Vue.js
2016/09/12 Javascript
jquery实现焦点轮播效果
2017/02/23 Javascript
Bootstrap3多级下拉菜单
2017/02/24 Javascript
Vue中对比scoped css和css module的区别
2018/05/17 Javascript
如何用webpack4带你实现一个vue的打包的项目
2018/06/20 Javascript
vue父组件异步获取数据传给子组件的方法
2018/07/26 Javascript
Angular服务Request异步请求的实例讲解
2018/08/13 Javascript
vue2中,根据list的id进入对应的详情页并修改title方法
2018/08/24 Javascript
bootstrap table合并行数据并居中对齐效果
2018/10/17 Javascript
小程序识别身份证,银行卡,营业执照,驾照的实现
2019/11/05 Javascript
vue页面切换项目实现转场动画的方法
2019/11/12 Javascript
python3第三方爬虫库BeautifulSoup4安装教程
2018/06/19 Python
对python requests发送json格式数据的实例详解
2018/12/19 Python
Python实现基于SVM的分类器的方法
2019/07/19 Python
PyTorch中Tensor的拼接与拆分的实现
2019/08/18 Python
vscode写python时的代码错误提醒和自动格式化的方法
2020/05/07 Python
html5中监听canvas内部元素点击事件的三种方法
2019/04/28 HTML / CSS
html5表单及新增的改良元素详解
2016/06/07 HTML / CSS
The Hut德国站点:时装、家居用品、美容等
2016/09/23 全球购物
鞋类设计与工艺专业销售求职信
2013/11/01 职场文书
装修施工安全责任书
2014/07/24 职场文书
《中国梦我的梦》小学生演讲稿
2014/08/20 职场文书
2015年“世界无车日”活动方案
2015/05/06 职场文书
情侣之间的道歉短信
2015/05/12 职场文书
Python爬虫之用Xpath获取关键标签实现自动评论盖楼抽奖(二)
2021/06/07 Python