0

我正在尝试让我的页面流式传输,但出现以下错误:

错误 321 (net::ERR_INVALID_CHUNKED_ENCODING):未知错误

我在 Chrome、IE 和 Firefox 中都试过了。

def login
    redirect_to_stored and return if session[:user]
    if request.post?
        if session[:user] = User.authenticate(params[:login], params[:password])
            redirect_to_stored(notice: 'Login successful') and return
        else
            flash_now :alert => "Login unsuccessful"
        end
    end
    on_document_load "$('#login').focus();"
    render :layout => 'login', :stream => true
end

我得到以下响应标头:

Cache-Control:must-revalidate, private, max-age=0
Connection:close
Content-Type:text/html; charset=utf-8
Server:thin 1.5.0 codename Knife
Set-Cookie:_rails3.website_session=biglongstringhere; path=/; expires=Sat, 02-Mar-2013 01:44:38 GMT; HttpOnly
Set-Cookie:__profilin=p%3Dt; path=/
Set-Cookie:__profilin=p%3Dt; path=/
Transfer-Encoding:chunked
X-MiniProfiler-Ids:[a bunch of stuff in here (this isn't the actual text)]
X-Request-Id:695da38a40064d87cbd463c83fef0a88
X-Runtime:0.034002
X-UA-Compatible:IE=Edge

查看 Chrome 的检查器,文件“登录”显示状态为“失败”,但单击它时,状态代码为 200 OK。我注意到的另一件事是,如果我在原始渲染调用之前输入以下内容,则响应显示 OK,但 Chrome 检查器仍然认为状态响应错误(如第一次)。在身体的其余部分有机会交付之前,连接是否已关闭?我不明白这里有什么问题。

render(:text => 'test', :stream => true) and return

作为附录,rails 日志没有显示任何错误。它使一切都很好。

4

1 回答 1

0

我有两台服务器;一个在工作,一个在家里。家里的人不使用 nginx 或任何下游应用程序与 Thin 进行通信。Thin 本身会产生错误......但在前面使用 nginx,文件会得到适当的服务。奇怪的是,当我没有在我的 rails 应用程序中明确启用任何流式传输时,这些文件仍然作为 Content Type: chunked 提供。

哎呀,甚至我的公共网站也被分块了......但我从来没有在 Rails 中启用流媒体......所以这一定意味着最终结果是分块的,而不是 html 的实际呈现。那我该如何实际测试呢?

于 2013-03-02T15:48:23.837 回答