注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

沉默蜂B4A安卓编程

国内资料最全的B4A资料库

 
 
 

日志

 
 

[转载]url传值的长度限制解决办法  

2014-04-19 20:10:52|  分类: ASP与SQL |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |



今天写到两个页面传值,刚开端经由过程url上加参数进行传值,

var strLink = "my.asp?str1=" + str1List + "&str2=" + str2List ;
var iHeight = 600;                                                          // 高度
var iWidth = 1000;                                                         // 宽度
var iTop = (window.screen.availHeight - 30 - iHeight) / 2;                     // 获得窗口的垂直地位;
var iLeft = (window.screen.availWidth - 10 - iWidth) / 2;                       // 获得窗口的程度地位;
window.open(strLink, "_blank", "status=yes,resizable=yes,scrollbars=yes,menubar=yes,width=" + iWidth + ",height=" + iHeight + ",left=" + iLeft + ",top=" + iTop)

此中str1List是一个单号的列表,str2是别的一个单号的列表,将参数传到my.asp,然后用Request.QueryString获取参数的值进行处理惩罚,刚开端my.asp页面运行没有题目,可是当单号的数据量斗劲大的时辰,my.asp页面就报错。经过排查,发明参数传到my.asp后,str1List数量少了,str2List没了,才知道应当是url传值时,数据没截掉了。

然后上彀查了一下,发明url是有长度限制了,网上是如许说的:

经由过程URL传值的题目,所以对url字符串进行encodeURIComponent对url字符串内容进行编码,题目解决,然则有时辰会呈现 The request filtering module is configured to deny a request where the query string is too long,题目的原因是 以get体式格式传字符串的时辰,有长度限制。

IIS 7对于Query String有长度限制。默认为2048.

该题目的解决办法可以经由过程批改
configuration/system.webServer/security/requestFiltering/requestLimits@maxQueryString setting.

<requestLimits maxQueryString="length" />

各浏览器与各Web Server对URL均有长度的限制如下:

在http和谈中,其实并没有对url长度作出限制,往往url的最大长度和用户浏览器和Web办事器有关,不一样的浏览器,能接管的最大长度往往是不一样的,当然,不一样的Web办事器可以或许处理惩罚的最大长度的URL的才能也是不一样的。

下面就是对各类浏览器和办事器的最大处理惩罚才能做一些申明.

Microsoft Internet Explorer (Browser)
IE浏览器对URL的最大限制为2083个字符,若是跨越这个数字,提交按钮没有任何反响。

Firefox (Browser)
对于Firefox浏览器URL的长度限制为65,536个字符,但当我测试时,最大只能处理惩罚8182个字符,这是因为url的长度除了浏览器限制外,还会受Web办事器的限制。

Safari (Browser)
URL最大长度限制为 80,000个字符。

Opera (Browser)
URL最大长度限制为190,000个字符。

Google (chrome)
url长度一旦跨越8182个字符时,呈现如下办事器错误:

写道
Request-URI Too Large
The requested URL""s length exceeds the capacity limit for this server.
Apache/2.2.12 (Ubuntu) Server at 127.0.1.1 Port 80

Apache (Server)
能接管最大url长度为8,192个字符。

Microsoft Internet Information Server(IIS)
能接管最大url的长度为16,384个字符。

经由过程上方的数据可知,为了让所有的用户都能正常浏览,我们的URL最好不要跨越IE的最大长度限制(2038个字符),当然,若是URL不直接供给给用户,而是供给给法度调用,侧这时的长度就只受Web办事器影响了。


可能有些伴侣会想当然的认为,若是最大长度限制为2038字符,是不是参数差不久不多可以传递1000个阁下的汉字。如许认为其实是不合错误的,对于中文的传递,终极会为urlencode后的编码情势进行传递,若是浏览器的编码为UTF8的话,一个汉字终极编码后的字符长度为9个字符。

这是网上引用过来的,总的来说,就是不合的浏览器对url都有不合的长度限制的。

如许的话,我上方的题目句真的不克不及用url传值了,因为我的str1List和str2List长度是不定了,只能想其他路子了。

经过一番揣摩,发明应用建议应用表单+POST办法传参,如许就没有大小限制了。
其实我是要把当前页面<form action="my.asp" method="post">
然后跳到my.asp页面后,用request.Form获取参数值就可以了。

然则我的当前页面还不克不及如许做,因为form的action已经用户另一个页面了,所以还不克不及如许做,


最后,经由过程在button提交的js中写上提交页面,如下:

      var iHeight = 600;                                                          // 高度
      var iWidth = 1000;                                                         // 宽度
      var iTop = (window.screen.availHeight - 30 - iHeight) / 2;                     // 获得窗口的垂直地位;
      var iLeft = (window.screen.availWidth - 10 - iWidth) / 2;                       // 获得窗口的程度地位;
      window.open("", "test", "status=yes,resizable=yes,scrollbars=yes,menubar=yes,width=" + iWidth + ",height=" + iHeight + ",left=" + iLeft + ",top=" + iTop)

      document.forms[0].action = "my.asp“;
      document.forms[0].target = "test";
      document.forms[0].submit();

然后在跳到my.asp页面后,用request.Form获取参数值就可以了。试了一下,数据量斗劲大时,都没有题目。
  评论这张
 
阅读(234)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017