`

URL长度的限制

 
阅读更多
摘要:众所周知, 传递小量参数(在没有其他原因,例如隐藏参数值的情况下)推荐使用GET方法,传递大量参数推荐使用POST方法。原因是什么呢? 一是get传递的参数都是明文,安全性较低,而且URL长度有限制!
原因是传说中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包传过来,一个一个读出来就好了。
详细出处参考:http://www.jb51.net/article/18858.htm
分享到:
评论

相关推荐

    解决URL长度的问题

    1. **使用POST请求**:相较于GET请求,POST请求的参数不会添加到URL中,因此不受URL长度限制。适合传输大量数据或敏感信息。 2. **使用Hash(#)**:HTML5引入的History API允许在URL的Hash部分添加数据,但这只...

    SampsonKY#Daily_question#HTTP中的URL长度限制1

    首先,http1.1协议中对URL长度是不受限的HTTP协议不对URI的长度作事先的限制,服务器必须能够处理任何他们提供资源的URI,并且应该能够处理无限长度的

    URL 长度有限制吗?

    标签明确指出是"URL长度限制",这部分内容则通过实验展示了即使在不通过浏览器发送请求时,URL长度也存在限制,并且这一限制发生在服务器端。 首先,我们要理解GET和POST方法的基本概念。GET方法通常用于获取资源,...

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

    本文档将从多个方面详细查证和分析URL长度限制的相关知识,包括RFC标准、主流浏览器以及服务器端的限制情况,为以后的使用提供便利。 首先,我们需要明确的是,关于URL长度限制的说法确实存在一个误区。在RFC2616中...

    js的参数有长度限制吗?发现不能超过2083个字符

    `('这里是所有长度')"></button>` 这种方式使得传递长参数成为可能,因为点击事件不会导致URL长度限制的问题。 5. **URL编码和解码**: 在通过URL传递参数时,需要将参数值进行URL编码,以确保特殊字符被正确地...

    URL传递过程中的加密,解密

    在实际应用中,我们可能还需要考虑到URL长度限制。由于URL有长度限制(一般浏览器支持的长度约为2048个字符),过长的加密字符串可能导致URL无法正常传递。因此,在选择加密算法时,应考虑其输出的密文长度,或者...

    URL地址以及相关问题

    - **数据量**:受URL长度限制,一般不超过2KB。 ##### 4.2 POST请求 - **用途**:用于提交数据到服务器,创建或更新资源。 - **安全性**:参数不在URL中显示,相对更安全。 - **数据量**:理论上没有限制,但实际上...

    CSS(js)限制页面显示的文本字符长度.docx

    在网页设计中,有时我们需要限制页面上显示的文本字符长度,以保持页面的整洁和可读性。...在实际应用中,可以根据需求选择适合的方法,同时也要注意各种限制,如浏览器的URL长度限制,以确保功能的稳定性和兼容性。

    url解码转码

    - 在实际应用中,还需要注意URL长度限制的问题,尤其是在某些网络请求中。 #### 五、总结 URL的解码与转码是Web开发中不可或缺的一部分,理解其原理和操作方式对于开发者来说至关重要。通过本篇文章的学习,希望...

    net url加密和解密的方法

    2. **URL长度限制**:加密后的URL可能会超过URL的最大长度,需要考虑是否需要分片或使用POST请求。 3. **兼容性**:不同的浏览器和服务器对URL中的特殊字符处理可能不同,加密前需做URL编码。 4. **安全性评估**:...

    文本限制长度或字符

    通常,我们会对文本进行长度限制,以确保其符合特定的标准,比如防止SQL注入、优化存储空间、提高传输效率等。 描述中提到的“文本限制长度或字符”可能是指在开发网页应用时,为了维护页面布局的稳定性和用户体验...

    07-js-bridge原理.md

    5. 扩展URL长度限制:由于URL长度有限制,当参数较多时,可以考虑使用Ajax POST请求的方式,将数据封装在POST体中,绕过URL长度限制。 以上知识点概括了JS-Bridge的基本概念、实现机制及其在实际开发中的应用。在...

    GET和POST的选择

    2. **数据大小**:GET方式的数据受到URL长度限制,一般不超过2KB;POST方式则没有明确的大小限制。 3. **缓存机制**:GET请求可以被浏览器缓存,而POST请求不会被缓存。 4. **幂等性**:GET请求是幂等的,多次请求同...

    java调用WebService(客户端)分享.pdf

    - HTTP POST方法将参数放在HTTP请求的主体中,不受URL长度限制,适合传递大量数据。 - `post()`方法演示了如何使用POST方法。它创建一个`URLConnection`,然后通过`OutputStreamWriter`写入请求参数。 3. **SOAP*...

    java调用WebService客户端.pdf

    - HttpPost方法将参数放在HTTP请求的正文中,不受URL长度限制,适合传递大段数据。 - 示例代码展示了如何创建URL对象,打开连接,然后通过OutputStreamWriter写入参数。 3. **HttpSoap**: - Soap协议是基于HTTP...

    .net 调用Outlook 批量发送邮件

    VS2012开发的,上传Excel,Excel中的内容为邮件的正文信息,Excel模板为Upload文件夹中文件 ...解决调用Outlook时弹出对话框问题, 带安装程序。 ...可以在VS中设置中 “生成”->“目标平台”设为x86 ...

    iOS移动应用开发 GET和POST两种基本请求方法的区别.pdf

    POST请求没有URL长度限制,可以携带更大体积的数据。然而,POST请求不会被浏览器自动缓存,也不会出现在历史记录中,因此在需要用户回退时,不会自动重新提交请求。 尽管GET和POST在HTTP层面上并无本质区别,都是...

Global site tag (gtag.js) - Google Analytics