5

カスタム日時 http ヘッダーでクライアントに応答する ASP.NET Web API アプリケーションを開発しています。ASP.NET/IIS から応答ヘッダーを削除する方法を説明した記事をいくつか読んだことがありますが、これは常に回復力があるように見えますが、取り除くことはできません。プログラマー/管理者の制御の及ばない最後の応答パイプラインに配置されているようです。

応答に「Date」ヘッダーを含めないのは悪い習慣かもしれませんが、前述のように、カスタムの日時ヘッダー (文字列表現ではなくティック) により、デフォルトのヘッダーが冗長になります。さらに、これはプライベート API であるため、誰がどのように使用するかを正確に把握しています。

したがって、特定のサイトの IIS (v7+) で (または Web API アプリケーションから直接) このヘッダーを削除する方法はありますか?

編集
次の手法を(成功せずに)試しました:

  • Web API プロジェクトからヘッダーを削除するためのカスタム ハンドラーの作成
  • カスタム IHttpModule の登録
  • <httpProtocol><customHeaders>セクションの web.config のヘッダーの明示的な削除
  • IIS マネージャーで HTTP 応答ヘッダーを削除する
  • protected void Application_PreSendRequestHeaders(object sender, EventArgs e)メソッドのヘッダー削除コードGlobal.asax.cs
4

2 に答える 2

6

HTTP Specによると、Date ヘッダーは必須ですが、あなたのケースには当てはまらないと思われるこれらの条件を除きます。

Origin servers MUST include a Date header field in all responses, except in these cases:

  1. If the response status code is 100 (Continue) or 101 (Switching
     Protocols), the response MAY include a Date header field, at
     the server's option.
  2. If the response status code conveys a server error, e.g. 500
     (Internal Server Error) or 503 (Service Unavailable), and it is
     inconvenient or impossible to generate a valid Date.
  3. If the server does not have a clock that can provide a
     reasonable approximation of the current time, its responses
     MUST NOT include a Date header field. In this case, the rules
     in section 14.18.1 MUST be followed.
于 2013-01-23T22:16:36.310 に答える
0

これは、実際の WebApi/Mvc パイプライン内からは不可能であるため、アクション フィルターや委任ハンドラーなどのオプションは使用できません。

代わりに、おそらくカスタムを実装しIHttpModuleて IIS 内に登録する必要があります。ここには、読んで従うべき記事があります。アプローチは非常にシンプルで、適応しやすいです。

setその例の を次のように置き換えるだけです。

HttpContext.Current.Response.Headers.Remove("Date");
于 2013-01-23T10:02:47.143 に答える