代码之家  ›  专栏  ›  技术社区  ›  Stefan Rusek

HTTP请求损坏

  •  5
  • Stefan Rusek  · 技术社区  · 15 年前

    在一个接收流量非常高的站点上,有一小部分请求如下:

    http://cheezburger.com/ScriptResource.axd?d=zaVpgH63ePt90pn</a>                                                   <br />                        <br />                        <p>                            <a id=
    

    在“引用页面”页面上有一行类似这样的行:

    <script src="/ScriptResource.axd?d=zaVpgH63ePt90p8fuEYkPAKFZuziMYsiIUbmxDb-gQ23Cx78LNJNFXTqKciA4ND_frR-_r9UKsdtLPk6M08xyk6cXFSLUrbBGDlvPIf-F9w1&amp;t=ffffffffd5e08dd5" type="text/javascript"></script>
    

    还有几行关于:

        <a id="login_LoginState_LoginButton" class="button1" UseSubmitBehavior="false" href="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;login$LoginState$LoginButton&quot;, &quot;&quot;, true, &quot;ctl00$Login1&quot;, &quot;&quot;, false, true))">Log In</a>
    <br /> 
    <br /> 
    <p> 
        <a id="login_LoginState_PasswordRecoveryLink" href="/forgot.aspx">Forgot Password?</a> 
    

    因此,页面的一部分似乎已被删除。在IE中发生的次数似乎比在火狐中要多,但这可能是因为我们的IE流量比火狐多。我们打开了HTTP压缩,但我不知道这是否是问题所在。

    所以我的问题是,发生了什么,如何解决?

    6 回复  |  直到 15 年前
        1
  •  2
  •   Stefan Rusek    15 年前

    在查看了由这个错误生成的自动bug报告之后,大多数情况下发生这种情况的原因似乎是客户端通过代理。我认为这归结为代理中的bug或代理上的gzip实现中的bug。

        2
  •  0
  •   McPherrinM    15 年前

    如果您有一点时间来诊断,有时间来节省时间,我有一个潜在的建议来收集更多信息:

    在加载后对页面长度写一个javascript检查,并确保该值与服务器的想法相同。如果不是,看看发生了什么。您可以实时运行此程序,也可以针对服务器运行浏览器场来查找错误。不过,这需要通过完整的javascript检查。

    这听起来像是一个奇怪的网络或服务器问题,这就是为什么我建议尝试获取客户端版本的页面来查看它们的内容。

        3
  •  0
  •   Yannick Motton    15 年前

    这可能是由于传输的页面被分块造成的:

    第3.5、3.6和3.6.1段讨论了如何对使用传输编码(如gzip)的HTTP页面进行分块,除非在发送整个页面后关闭连接。

    http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.5

    我相信每一块都是独立压缩的,其中一块可能已经被破坏了。

        4
  •  0
  •   Community CDub    7 年前

    这看起来像是一个IE错误。IE6总是有 problems with gzipped 响应和IE8引入了 Lookahead Downloader .

    我想你可能在处理 'Missing 4k Bug' 建议的解决方法是使用 Content-Type HTTP头而不是 <meta http-equiv="Content-Type"/> 用于字符集声明的标记。

    更多链接:

        5
  •  -1
  •   leonm    15 年前

    仅仅看一眼很难说。它可以是一个为您添加会话ID的框架,作为cookie会话的回退。小部分用户可能是禁用cookie的用户?

    类似的事情发生在 Tomcat 使用jsession id。

        6
  •  -1
  •   Ralph Lavelle    15 年前

    &amp; “是正确的。这是在 <Script> 贴上标签,这样就可以了。检查启用了ASP.NET AJAX的页面的源代码,您将看到它将以该形式出现。

    你有必要的吗 <httpHandlers> 在“web.config”中使用 <add verb="GET,HEAD" path="ScriptResource.axd" ... /> 进入?我只是想知道你的应用程序是否知道如何处理.axd文件?

    @“d”参数是经过编码的资源键,由ASP.NET AJAX添加。“t”是时间戳,用于确定上次修改程序集的时间。