URL 长度有限制吗?

 更新时间:2009年06月26日 17:18:47   作者:  
众所周知, 传递小量参数(在没有其他原因,例如隐藏参数值的情况下)推荐使用GET方法,传递大量参数推荐使用POST方法。原因是什么呢?
原因是传说中GET方法是通过URL来传递,而URL的长度是受限的,而POST方法采用流的方式,理论上可以传递的容量是没有限制的。
现在来看这个描述:“URL的长度是受限的”,具体是在哪里受限制呢?browser端还是server端呢?网上现在google出来的结果都是说url的长度实际上是受到browser的限制,如IE限定url长度为2083字节,opera 是4050, Netscape 是8192,等等。据说HTTP协议本身对GET方法的长度没有限制。那么,如果不使用浏览器,而是从程序里发送HttpRequest的话,GET发送的长度就可以是无限的么?抱着这样的想法,进行了如下实验:

在client端,用Java实现,向server端发送HttpRequest,使用GET方法。

在server端,设计一个apache module,并将strlen(r->args),用ap_rprintf输出,作为response,返回到Java端。

通过不断增加GET方法传过去的字符串的长度,发现URL长度超过8208字节时,Java抛出IO Exception: Server returned HTTP response code: 414 for URL: .....

414 代表哪种错误呢?

414 - Request-URL Too Long (SEE: http://www.websitepulse.com/kb/4xx_HTTP_status_codes.html)

由此可见,Server端对于URL的长度是有限制的,那么对于GET方法可以传输的数据也是有限制的。只是这个限制可能根据服务器的处理能力而定,或者在哪里哪里配置,就不是很清楚了。(俺又开始瞎猜,这貌似不是什么好习惯的说)。

下面开始瞎掰:

其实这是可以理解的,URL长度不可能没有限制的,Http协议毕竟是UDP的,而一个UDP包毕竟是有大小限制的。那么POST为什么就能传递大批量数据呢?在apache module里面尝试了读取post数据之前,还真没有什么深刻的理解。只不过用一个“流”字打法之而已。实际上,POST数据解析的时候是分块来读取的,如果从UDP的角度来理解的话,就可是分成好多个UDP包传过来,一个一个读出来就好了。

相关文章

  • Git下载、安装与环境配置的详细教程

    Git下载、安装与环境配置的详细教程

    这篇文章主要介绍了Git下载、安装与环境配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • 基于QGIS的研究区域遥感影像裁切下载方法(以岳麓区为例)

    基于QGIS的研究区域遥感影像裁切下载方法(以岳麓区为例)

    本文以湖南省长沙市岳麓区为例,主要讲解如何基于QGIS这款软件,把岳麓区范围内的遥感影像下载,并使用QGIS进行切片,最后用Leaflet进行展示的例子,对QGIS遥感影像裁切下载相关知识感兴趣的朋友跟随小编一起看看吧
    2024-05-05
  • Clion ROS开发环境设置技巧

    Clion ROS开发环境设置技巧

    这篇文章主要介绍了Clion ROS开发环境设置技巧,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • 完美解决webstorm启动索引文件卡死的问题

    完美解决webstorm启动索引文件卡死的问题

    下面小编就为大家分享一篇完美解决webstorm启动索引文件卡死的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-11-11
  • markdown简介和语法介绍

    markdown简介和语法介绍

    这篇文章主要介绍了markdown简介和语法介绍,本文重点介绍了常用的一些markdown语法,可以做为一个简明版的入门指南,另本文还提供了一个在线学习markdown的简明教程,需要的朋友可以参考下
    2014-07-07
  • VS2019中Git源代码管理实现总结

    VS2019中Git源代码管理实现总结

    这篇文章主要介绍了VS2019中Git源代码管理实现总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • VSCode方便实用必备的使用技巧大全

    VSCode方便实用必备的使用技巧大全

    Visual Studio Code (VSCode)是一款功能强大的开源代码编辑器,免费开源,本文将分享一些常用的VSCode小技巧,帮助你提升开发效率和编程体验,专注于业务逻辑的开发,无论是文件导航、代码编辑、调试还是终端操作,VSCode 都能提供非常丰富的功能,帮助你快速构建高质量的应用
    2025-02-02
  • idea对CPU的占用率过大问题的解决方法

    idea对CPU的占用率过大问题的解决方法

    本文主要介绍了idea对CPU的占用率过大问题的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-03-03
  • Git忽略文件.gitignore操作方法指南

    Git忽略文件.gitignore操作方法指南

    这篇文章主要介绍了了Git中的.gitignore文件及其用法,包括如何创建、配置和使用.gitignore文件来忽略不需要提交的文件和目录,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-02-02
  • VSCode实现文件嵌套功能的完全指南

    VSCode实现文件嵌套功能的完全指南

    你是否厌倦了在VSCode中面对满屏的配置文件、测试文件或编译产物?是否曾因查找关联文件而频繁滚动资源管理器?**文件嵌套(File Nesting)功能正是解决这一痛点的利器!本文将手把手教你如何通过VSCode的虚拟路径管理技术,需要的朋友可以参考下
    2025-04-04

最新评论