2016-05-18 24 views
4

エンドポイントを文書化するためのSwaggerを備えたWebApiサーバーがあります。 Content-Security-PolicyヘッダーとX-Frame-Optionsヘッダーを追加します。コールを傍受してカスタムヘッダーを追加することでこれを達成したかったのですが、その方法を見つけることができませんでした。私たちは5.0.4バージョンのWebApi NuGetパッケージにSwashbuckle Swaggerを使用しています。.Net内のすべてのスワッガーレスポンスにカスタムヘッダーを追加します。

スワッガーレスポンスを傍受する方法やカスタムヘッダーをレスポンスに追加する方法はありますか?

答えて

4

すべての応答にヘッダーを追加する場合は、SendAsyncメソッドをオーバーライドしてヘッダーを追加できるDelegatingHandlerを追加することをお勧めします。したがって、DelegatingHandlerから継承したクラスを作成し、SendAsyncをオーバーライドします。例えば:

public class AddCustomHeadersResponseHandler : DelegatingHandler 
{ 
    protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) 
    { 
     var response = await base.SendAsync(request, cancellationToken); 

     response.Headers.Add("Content-Security-Policy", "yourSecurityValue"); 

     response.Headers.Add("X-Frame-Options", "yourFrameOptions"); 

     return response; 
    } 
} 

はその後Global.asax.csにApplication_Start()でご使用の構成にクラスのインスタンスを追加します。

GlobalConfiguration.Configuration.MessageHandlers.Add(new AddCustomHeadersResponseHandler()); 
+0

作品を魔法のように、単にいくつかの調整が唯一のフィルタに追加する必要がありますスワッガーコール、しかしこれは私の場合には完全に機能します。どうもありがとうございました! – BitDefender

関連する問題