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 のインスペクターを見ると、ファイル 'login' のステータスは 'failed' と表示されますが、クリックするとステータス コードは 200 OK になります。私が気づいたもう 1 つのことは、元の render 呼び出しの前に次を入れると、応答は OK と表示されますが、Chrome インスペクターはまだ Status 応答がエラーであると考えていることです (1 回目のように)。体の残りの部分が送達される前に、接続が閉じられていますか? ここで何が問題なのかわかりません。

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

追記ですが、railsのログにエラーは出ていません。それはすべてをうまくレンダリングします。

4

1 に答える 1

0

私は 2 つのサーバーを持っています。職場に 1 つ、自宅に 1 つ。自宅にあるものは、nginx やダウンストリーム アプリケーションを使用して Thin と通信しません。シン自体はエラーを生成します...しかし、前にnginxを使用すると、ファイルは適切に提供されます。奇妙なことに、Rails アプリでストリーミングを明示的に有効にしていない場合でも、ファイルは Content Type: chunked として提供されます。

一体、私の公開ウェブサイトでさえチャンクとして提供されています...しかし、Railsでストリーミングを有効にしたことはありません...したがって、最終結果はチャンクされますが、htmlの実際のレンダリングではありません。これを実際にテストするにはどうすればよいですか?

于 2013-03-02T15:48:23.837 に答える