众所周知, 传递小量参数(在没有其他原因,例如隐藏参数值的情况下)推荐使用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方法可以传输的数据也是有限制的。
分享到:
相关推荐
1. **使用POST请求**:相较于GET请求,POST请求的参数不会添加到URL中,因此不受URL长度限制。适合传输大量数据或敏感信息。 2. **使用Hash(#)**:HTML5引入的History API允许在URL的Hash部分添加数据,但这只...
在ajax中使用post方法,用常规的参数格式:param1=a1¶m2=a2 ,当参数长度过长时,依然提交不成功。比如我们经常这样写一个ajax的post请求: $.ajax({ type: "post", // post or get contentType:"application...
它通过URL参数来传递信息,并将这些信息显示在浏览器地址栏中。这意味着GET请求的数据是可见的,并且可以被缓存或保存为书签。 **POST** 方法主要用于向服务器发送数据。它不直接在URL中显示数据,而是将数据放在...
在iOS开发中,网络编程是不可或缺的一部分,而GET和POST是最常见的两种HTTP请求方式。本文将深入探讨这两种请求方法,并通过实例演示它们在iOS中的应用。 GET请求是HTTP协议中最基本的一种请求方法,用于从服务器...
此外,GET请求对数据长度有限制,通常不超过2KB。 2. POST请求: POST请求则常用于向服务器提交数据,如表单提交。与GET不同,POST请求的数据包含在请求体中,不会显示在URL上,因此更适合处理敏感信息。POST请求...
- **数据大小限制**:GET方法受URL长度限制,因此不适合传输大量数据;而POST方法没有明确的大小限制。 - **缓存机制**:GET请求可以被浏览器缓存,而POST请求则不会被缓存。 - **幂等性**:GET请求是幂等的,多次...
标题中的问题直指URL长度是否有...GET方法适合传递少量非敏感参数,而POST方法则适用于处理大量数据或敏感信息,因为其数据传输方式不受URL长度的约束。了解这些限制和差异对于优化网络请求和处理大型数据至关重要。
GET请求的另一个显著缺点是其数据大小受限于URL长度,通常不超过2KB,这限制了其传输大量数据的能力。相比之下,POST请求在数据大小上没有硬性限制,理论上可以传输任意大小的数据,非常适合大数据传输的场景。 ###...
由于GET和POST都是TCP/IP上的TCP连接,所以技术上你可以给GET请求增加request body,或者在POST请求中带上URL参数,尽管这通常不是标准做法。在HTTP协议中,不同浏览器和服务器作为运输公司,对数据的传输量都有自己...
GET和POST方法的选择应基于数据的类型、大小以及安全性需求。GET适用于简单的数据查询和获取,而POST适用于复杂的数据交互和修改。在处理非ASCII字符时,需要注意编码格式的设置,避免出现乱码或数据丢失的情况。...
2. **数据大小**:GET有URL长度限制,POST无此限制。 3. **可见性**:GET请求的数据是可见的,POST请求的数据是隐藏的。 4. **安全性**:POST比GET更安全,但都需要配合其他安全措施来保护数据。 5. **可缓存性**:...
此外,GET请求通常受限于URL长度,所以能传递的数据量有限。 2. POST请求: 相比GET,POST请求更适用于向服务器提交数据,比如表单提交。在POST请求中,数据被放在请求体中,不会显示在URL上,因此更适合处理敏感...
GET请求的大小受到URL长度限制,一般不超过2KB,这意味着它不能携带大量数据。此外,GET请求是幂等的,意味着多次执行同一请求,结果应始终相同,不会改变服务器状态。 POST请求则更复杂,主要用于提交数据以创建或...
当客户端(如浏览器)通过GET方式发起请求时,请求的参数会被附加在URL后面,并通过HTTP协议传输给服务器。这种方式的特点是简单快速,但安全性较低,且不适合用于传输敏感数据或大数据量的信息。 - **POST**:...
它将请求参数附加到URL后面,所有信息都是可见的,因此不适合传递敏感数据。GET请求有长度限制,且不支持请求体。 2. POST:POST请求常用于向服务器发送数据,如提交表单。数据封装在请求体中,对数据大小无明显...
1. **GET**方式的数据是通过URL进行传输的,而**POST**方式的数据则是通过HTTP消息的主体部分进行传输的。这意味着GET方式的数据会直接显示在浏览器地址栏中,而POST方式的数据则不会直接暴露。 2. **GET**请求中,...
- 数据大小:GET有长度限制,通常不超过2KB;POST没有严格的限制,但实际应用中受服务器配置影响。 - 安全性:GET因数据可见,对隐私保护较差;POST数据不可见,更适合传递敏感信息。 - 缓存和可书签:GET请求可以被...
- 如果客户端使用其他编码方式(如UTF-8)对URL进行了编码,则需要转换编码方式才能正确读取参数。 - 可以通过以下Java代码手动转换编码: ```java String value = new String(request.getParameter("param")....
- GET方法将所有参数明文显示在URL中,容易被浏览器历史记录或其他人截获,特别是敏感信息(如密码)不应通过GET方式提交。 - 使用POST方法时,数据通过HTTP请求体传输,相对更安全,但仍需注意加密措施的实施。 ...