2012-03-26 11 views
2

OpenRastaを使用してかなり簡単なHTTPサービスを作成しています。 HEADリクエストの場合、HEAD要求にはContent-Lengthが "リクエストがGETであった場合に送信されるエンティティ本体のサイズ"(14.13節)に設定されている必要があります。OpenRastaがHEADレスポンスのContent-Lengthヘッダーを上書きする

しかし、OpenRastaは明らかにレスポンスボディが空であるとみなし、自動的にContent-Lengthヘッダーを "0"に設定します。

この動作を無効にするには、どのような方法が推奨されますか?

まさにこの問題に直面し

+0

今のところ、私は実際にコーデックのヘッダーを設定していたので、いくつかのコードの重複につながるHEADリクエストにコーデックをまったく使用しないことでこれを処理しています。代わりにHEADリクエストのハンドラにヘッダを設定し、レスポンスにエンティティを返さないようにするだけです。 –

答えて

0

Thanks-私の解決策は、HEADリクエストに対処するIPipelineContributorを追加しました。私は、要求が正常として処理できるようにするためで取得するHEADからHTTPメソッドを入れ替え前処理工程において

public void Initialize(IPipeline pipelineRunner) 
{ 
    // We're going to modify the HTTP method, so allow Rasta to have a go first 
    pipelineRunner.Notify(PreProcessRequest).After<HttpMethodOverriderContributor>(); 
} 

次のように投稿者は、初期化されました。

static PipelineContinuation PreProcessRequest(ICommunicationContext arg) 
{ 
    if (arg.Request.HttpMethod == "HEAD") 
    { 
    // Change the method to GET to allow normal processing 
    arg.Request.HttpMethod = HttpMethod.GET.ToString(); 
    } 

    return PipelineContinuation.Continue; 
}  

パイプラインの最後に、応答ヘッダーが期待通りに書き込まれますが、本文には何も書き込まれません。

+0

ありがとうございます。私はおそらくそれを試みます。 –

関連する問題