gpt4 book ai didi

ajax - HTTP header 对浏览器来说是否太大?

转载 作者:行者123 更新时间:2023-12-03 13:39:59 25 4
gpt4 key购买 nike

我正在构建一个 AJAX 应用程序,它使用 HTTP 内容和 HTTP header 来发送和接收数据。是否存在浏览器无法读取从 HTTP header 接收到的数据,因为它太大了?如果是,限制是多少?所有浏览器的行为是否相同?

我知道理论上对 HTTP header 的大小没有限制,但是在 实践过去,我在某些平台、浏览器或客户端计算机或机器上安装的某些软件可能会遇到问题。我更关注使用 HTTP header 的安全实践指南。换句话说,HTTP header 可以在多大程度上用于传输附加数据而不会出现潜在问题?

谢谢,关于这个问题的所有意见,非常感谢和有趣。托马斯回答得到了赏金,但是 Jon Hanna's answer提出了关于代理的一个很好的观点。

最佳答案

简短回答:

相同的行为:否

流行浏览器中的最低限制:

  • 每个 header 10KB
  • 一个响应中的所有 header 为 256 KB。

  • 运行 Mac OS X 10.6.4 的 MacBook 的测试结果:

    最大响应成功加载,一个 header 中的所有数据:
  • 歌剧 10:150MB
  • Safari 5:20MB
  • IE 6 通过 Wine:10MB
  • Chrome 5:250KB
  • 火狐 3.6:10KB

  • 备注
    Opera、Safari 和 IE 中那些离谱的大标题需要几分钟才能加载。

    Chrome 提示:
    整个 HTTP header 的实际限制似乎是 256KB。
    出现错误消息:“错误 325 (net::ERR_RESPONSE_HEADERS_TOO_BIG):未知错误。”

    火狐注意:
    通过多个 header 发送数据时,100MB 工作正常,只需拆分超过 10'000 个 header 。

    我的结论:
    如果你想支持所有流行的浏览器,每个标题 10KB 似乎是限制,所有标题加起来是 256KB。

    我的 PHP 代码用于生成这些响应:
    <?php

    ini_set('memory_limit', '1024M');
    set_time_limit(90);
    $header = "";

    $bytes = 256000;

    for($i=0;$i<$bytes;$i++) {
    $header .= "1";
    }

    header("MyData: ".$header);
    /* Firfox multiple headers
    for($i=1;$i<1000;$i++) {
    header("MyData".$i.": ".$header);
    }*/

    echo "Length of header: ".($bytes / 1024).' kilobytes';

    ?>

    关于ajax - HTTP header 对浏览器来说是否太大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3326210/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com