众所周知, 传递小量参数(在没有其他原因,例如隐藏参数值的情况下)推荐使用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方法可以传输的数据也是有限制的。
分享到:
相关推荐
在ajax中使用post方法,用常规的参数格式:param1=a1¶m2=a2 ,当参数长度过长时,依然提交不成功。比如我们经常这样写一个ajax的post请求: $.ajax({ type: "post", // post or get contentType:"application...
Http网络工具类,主要包括httpGet、httpPost以及http参数相关方法,以httpGet为例: static HttpResponse httpGet(HttpRequest request) static HttpResponse httpGet(java.lang.String httpUrl) static String ...
客户端请求头缓冲区大小,如果请求头总长度大于小于128k,则使用此缓冲区 client_header_buffer_size 128k; 请求头总长度大于128k时使用 large_client_header_buffers 设置的缓存区 large_client_header_
把这个网站所有的能用浏览器通过GET的方式获取到的资源全部抓取到本地,包括网页和各 种类型的文件,如:图片、flash、mp3、zip、rar、exe等文件。可以将整个网站完整地下传至 硬盘内,并能保持原有的网站结构精确...
url地址参数加密 一些常用验证函数 下拉-单选框选择 创建多级目录 删除数组中相同元素,只保留一个 判断路径是绝对目录还是相对目录 利用PHP搜索指定目录下指定的文件 加密解密 去掉指定的html标签 发送 ...
//设置生成图片,包括图片的大小,长度是300,宽是200 //out.println(filename); session.setAttribute("file_name1",filename); String URL= request.getContextPath() + "/servlet/DisplayChart?filename=" + ...
"method": 'post',//和后台交互的方式:post/get "multi": true,//是否能选择多个文件 "queueID": 'None_none',//显示上传文件队列的元素id,可以简单用一个div来显示 "queueSizeLimit" : 10,//队列中允许的最大文件...
HttpGetFileSize 读取internet上的文件大小 HttpPostData 向http服务器Post数据 HttpOpen 打开一个Internet句柄 HttpAddParms 为Http句柄添加一个参数 HttpSend 发送Http句柄中的Post...
11 URL getResource(String path) 返回指定资源(文件及目录)的URL路径 12 InputStream getResourceAsStream(String path) 返回指定资源的输入流 13 RequestDispatcher getRequestDispatcher(String uripath) ...
64、原生JavaScript获得URL中GET参数值 65、原生JavaScript实现全选通用方法 66、原生JavaScript实现全部取消选择通用方法 67、原生JavaScript实现打开一个窗体通用方法 68、原生JavaScript判断是否为客户端设备 69...
• sample17.htm 字符串长度 • sample18.htm 创建字符串 • sample19.htm 字符串与Unicode编码 • sample20.htm 返回字符串中的一个字符 • sample21.htm 通过字符串的...
URL 编码解码.ec USB.ec USER32.EC user32模块.EC user模块.EC USUAL.EC vcode.ec VERSION.EC ve 模块.ec Vista.ec vistaAERO模块.ec Vista风格化.ec W.y.k_!易模块1.10.ec W.y.k_! 易模块1.18.ec WBCZ.EC WBFH.EC ...
-修正Form不能自适应浏览器大小的改变(feedback:kaywood)(WorkItem#6309)。 -增加重载方法Alert.Show(message, title, icon)(feedback:TheBox)(WorkItem#6353)。 -为容器控件(比如Panel,Region,Tab等)增加AJAX...
实例102 解析URL地址中传递的编码参数 134 实例103 转义帖子中的特殊字符 135 实例104 获取任意字符的ASCII码 136 实例105 查找指定ASCII码对应的字符 136 实例106 合理定义上传文件的名称 137 实例107 通过异或方式...
4.5.2 长度 53 4.5.3 Vdata 54 4.5.4 流和内联 54 4.5.5 URL 54 4.5.6 布尔型 54 4.5.7 数字类型 54 4.6 事件和导航 54 4.6.1 导航和事件处理 54 4.6.2 历史 54 4.6.3 VAR 元素 55 4.6.4 任务 55 4.6.5 卡片/页面间...
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。...
这个串由三个字符以及跟随在字母之后的一位数字构成.这些复杂的模式使用的正则表达式语法指定了该表达式中每个元素要重复出现的次数. 指定复制的字符总是出现在它们所作用的模式后面.由于某种复制类型相当常用....
实例102 解析URL地址中传递的编码参数 134 实例103 转义帖子中的特殊字符 135 实例104 获取任意字符的ASCII码 136 实例105 查找指定ASCII码对应的字符 136 实例106 合理定义上传文件的名称 137 实例107 通过异或方式...
实例102 解析URL地址中传递的编码参数 134 实例103 转义帖子中的特殊字符 135 实例104 获取任意字符的ASCII码 136 实例105 查找指定ASCII码对应的字符 136 实例106 合理定义上传文件的名称 137 实例107 通过异或方式...
-这样所有需要占据全屏的Panel(不管你是Accordion,Panel,ContentPanel,Form,GroupPanel,SimpleForm,Tree还是Grid,TabStrip)都可以通过这种方式全屏。 -简单方便,示例可以参考 default.aspx 或者 other\...