流文本数据时禁用Chrome缓冲

Dav*_*bbo 6 streaming google-chrome http

我们有一个网站,可通过http流文本数据。它是通过以下方式设置的:

  • 它不做任何服务器端缓冲
  • Content-Typetext/plain
  • Transfer-Encodingchunked
  • 压缩被禁用

当使用纯curl文本或FireFox时,文本从第一个字节流到浏览器。但是,使用Chrome浏览器时,在发送1024个字节之前不会显示任何文本。之后,一切都会立即显示出来。

问题:有没有办法禁用这种缓冲行为?

更多信息:这是一个简单的ASP.NET页面,演示了该行为:

<%@ language=c# %>

<%
    Response.BufferOutput = false;
    Response.ContentType = "text/plain";

    for (int i=0; i<50; i++)
    {
        Response.Write("01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567\r\n");
        System.Threading.Thread.Sleep(1000);
    }
%>
Run Code Online (Sandbox Code Playgroud)

使用禁用压缩的web.config:

<configuration>
    <system.webServer>
        <urlCompression doStaticCompression="false" doDynamicCompression="false"/>
    </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

我还在http://bufferingtest.azurewebsites.net/上运行了一个实时repro 。只需从Chrome和FireFox两者中点击它,即可观察到不同的行为。

McF*_*iez 5

添加X-Content-Type-Options: nosniff到您的标题中,让我知道您的情况。

根据Mozilla 文档

X-Content-Type-Options响应的HTTP标头是由服务器使用以指示在通告的MIME类型的标记 Content-Type标头不应该被改变,并且被遵循。这允许选择退出 MIME 类型嗅探,或者换句话说,这是一种表示网站管理员知道他们在做什么的方式。