2016-05-18 9 views
4

Wir haben einen WebApi-Server mit Swagger zur Dokumentation der Endpunkte. Wir möchten Content-Security-Policy- und X-Frame-Options-Header hinzufügen. Wir wollten dies erreichen, indem wir die Aufrufe abfangen und die benutzerdefinierten Header hinzufügen, aber wir finden keinen Weg dazu. Wir verwenden Swashbuckle Swagger für WebApi NuGet Paket mit Version 5.0.4.Fügen Sie einen benutzerdefinierten Header zu allen Swagger-Antworten in .Net hinzu.

Gibt es eine Möglichkeit, Swagger-Antworten abzufangen oder einen benutzerdefinierten Header zu den Antworten hinzuzufügen?

Antwort

4

Wenn Sie die Header zu allen Antworten hinzufügen möchten, wäre eine Option, eine DelegatingHandler hinzuzufügen, die die Header hinzufügen könnte durch Überschreiben der SendAsync-Methode. Sie würden also eine Klasse erstellen, die von DelegatingHandler erbt und dann SendAsync überschreibt. zB:

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; 
    } 
} 

Dann eine Instanz der Klasse zu Ihrer Konfiguration in Application_Start() in Global.asax.cs hinzufügen:

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

wirkt wie ein Zauber, nur wenige Verbesserungen hinzugefügt werden müssen nur die filtern Swagger Calls, aber das wird total für meinen Fall funktionieren. Vielen Dank! – BitDefender

Verwandte Themen