ajax传参过长问题

本文探讨了在IE浏览器中使用AJAX进行POST请求时遇到的“没有权限”错误问题,通过实验发现该问题是由于URL长度过长导致。文章详细分析了不同浏览器对URL长度的限制,并给出了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       前段时间一个同事遇到一个ajax问题,大致的代码如下:

              var obj;

        if(window.ActiveXObject)

        {

            obj=new ActiveXObject('Microsoft.XMLHTTP');

        }

        else if(window.XMLHttpRequest)

        {

            obj=new XMLHttpRequest();

        }

        obj.open('POST', url, true);

        obj.send(null);

 

这样的写法,当url足够长的时候,ieobj.open('POST', url, true);这一行会报一个“没有权限”的错误。我分析了一下,大概得出如下结论,如果分析的不对,望高手指点:

首先我用google chrome浏览器执行了一下他的代码,没有存在任何的问题,但是ie下却报“没有权限”,于是我猜测可能是url过长,于是试验将url弄的短一点,结果发现没有出现问题,于是我猜测可能是ie对于打开open一个请求,url不能超过2,048字节。结果一查资料发现:

Microsoft Internet 浏览器有 2,083 个字符的最大的统一资源定位符 (URL) 长度。 Internet Explorer 也有 2,048 个字符的最大路径长度。此限制适用于 POST 请求和 GET 请求 url。如果使用的 GET 方法您限于减去实际路径中的字符数的有 2,048 个字符的最大。但是,POST 方法不受大小的提交名称/值对的 URL。在标头中并不在 URL 中传输这些对。 RFC 2616"超文本传输协议--HTTP/1.1"未指定 URL 长度的任何要求。

 

最后得出解决方法,参数在obj.send里面传,url只需写出页面的位置。结果发现,没有问题,一切运行正常。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值