• Get方法提交URL的最大长度限制


    这个问题一直以来似乎是被N多人误解,其实Http Get方法提交的数据大小长度并没有限制,而是IE浏览器本身对地址栏URL长度有最大长度限制:2083字符。

    详情见:

    1.http://support.microsoft.com/kb/208427/zh-cn
    2.http://support.microsoft.com/kb/254786/zh-cn
    注:以上链接地址均来自微软的中文MSDN。

    另外就是受服务器软件的限制了。


    当我们要尝试用GET方式传递WEB页面参数时,不得不考虑会不会因为浏览器地址栏长度限制导致错误。虽然用google能得到一堆,但是也许这些数据会互相矛盾。眼见为实,我用下面的方法测试了一下目前的各种浏览器的地址长度限制。

    1.自己搭建一个本地的apache+php的web平台,这个不在本文的讨论范围。

    2.在web服务器的根目录建立名为index.php的文件,写入如下内容:

    <form method='get' action='index.php'>
    $char='';
    $len=1000;
    $total_len=strlen('http://localhost/index.php?submit=submit&char=')+$len;
    for($i=0;$i<$len;$i++){
    $char.='1';
    }
    echo $_REQUEST['char'];
    echo "<p>Address length: ".$total_len;
    echo "<p><input type='submit' name='submit' value='submit'>";
    echo "<p><input type='hidden' name='char' value='".$char."'>";
    </form>


    3.访问http://localhost/index.php, 通过修改”$len=1000;”这行1000这个数字后点击submit测试各浏览器到地址栏极限。结果为$len所赋值加 上”http://localhost/index.php”的46字节的和。

    结果如下:
    1. Firefox 3.0.3: 当$len 赋值为4053时出错,可见最长字长4098

    2. IE7.0: 2083, 结果与官方说法一致

    3. Opera 9.60: 4098 , Firefox3.0.3 相同

    4. google chrome 0.2.149.30: 4098, 与Firefox3.0.3,Opera 9.60相同

    可见Firefox, Opera, Chrome 虽然各自使用了不同的内核,至少在地址栏长度上有高度的默契。

    另外,如果用POST方式传递数据,无论传递数据有多大,结果只会让浏览器死掉而不是报错。因为post的数据是放在header里传输的。可见POST传递数据无限制的传言基本上可以认为是正确的。

  • 相关阅读:
    论单页Web应用和RESTful架构
    [译]作为一个web开发人员,哪些技术细节是在发布站点前你需要考虑到的
    JavaScript模块化规范
    一个Option请求引发的深度解析
    读《JavaScript语言精粹》的一些感言
    深圳积分入户经验之谈
    windows下的node-canvas历程
    linux服务器部署.net core 3.1
    Windows下Redis的安装、配置
    Linux Centos 安装宝塔面板一句命令解决
  • 原文地址:https://www.cnblogs.com/YuanShuai/p/2364853.html
Copyright © 2020-2023  润新知