2017-09-22 2 views
0

Da ich mehrere Websites auf derselben IIS-Instanz hostet, habe ich in den IIS-Einstellungen den HTTP-Antwortheader "X-Frame-Optionen: DENY" definiert, um meine Clients (und deren Clients) vor Clickjacking zu schützen .Überschreiben der IIS-Antwortheader

Ich arbeite derzeit mit WebForms auf einer E-Commerce-Website und ich muss den Antwort-Header 'X-Frame-Optionen' auf einer bestimmten URL (der Rückruf meines Zahlungsanbieters) entfernen.

Ich habe ein HTTP-Modul geschrieben (siehe Code unten) und registriert es in der 'web.config' meiner E-Commerce-Website, der Code funktioniert, aber es scheint, dass IIS die Antwortheader nach der Ausführung von meinem hinzufügt HttpModul.

public class XFrameOptionsControl : IHttpModule 
{ 
    public void Dispose() 
    { 
    } 

    public void Init(HttpApplication application) 
    { 
    application.PreSendRequestHeaders += new EventHandler(PreSendRequestHeaders); 
    } 

    private void PreSendRequestHeaders(object sender, EventArgs e) 
    { 
    HttpApplication application = sender as HttpApplication; 
    HttpContext context = application.Context; 

    string callbackDocumentName = "callback.html"; 

    if (callbackDocumentName != null) 
    { 
     if (!context.Request.RawUrl.ToLower().Contains(callbackDocumentName.ToLower())) 
     { 
     context.Response.Headers.Remove("X-Frame-Options"); 
     } 
    } 
    } 
} 

Normalerweise ist die ‚callbackDocumentName‘ aus der ‚web.config‘ abgerufen, aber ich habe es für das Beispiel zu vereinfachen. Ich habe versucht, das Debuggen mit Visual Studio und dem 'context.Response.Headers' enthält die folgenden Überschriften, aber nicht die 'X-Frame-Options':

  • Cachecontrol
  • Content-Type
  • Server
  • X-AspNet-Version

Vielen Dank im Voraus!

+0

sein könnte Hilfe geschickt wird: https://blogs.msdn.microsoft.com/varunm/2013/ 04/23/remove-unwanted-http-response-headers/ – ediblecode

+0

Vielen Dank für Ihre schnelle Antwort! Ich habe diesen Artikel bereits berücksichtigt, bevor ich ihn auf Stackoverflow gepostet habe. Leider gibt es für die 'X-Frame-Optionen' kein 'ALLOWALL', also muss ich es wirklich aus den Headern entfernen, ich kann es nicht nur ändern –

Antwort

0

Wenn Sie die Antwort ändern möchten, müssen Sie dies tun, nachdem die Antwort generiert wurde.

momentan du es getan hast, noch bevor die Anfrage an die Anwendung

versuchen, diese

 public void Init(HttpApplication context) 
     { 
      context.PostRequestHandlerExecute += new EventHandler(this.ProcessResponse); 
     } 

     private void ProcessResponse(object sender, EventArgs e) 
     { 
      HttpContext context = ((HttpApplication)sender).Context; 
      //do whatever you want to the context 
      //context.Response.Headers.Remove 
      } 
     } 
+0

Danke für Ihre Antwort! Es funktionierte jedoch nicht für mich, da ich Context.ApplicationInstance.CompleteRequest an anderer Stelle verwende, so dass PostRequestHandlerExecute umgangen wurde. Ich habe sogar versucht, EndRequest, die von CompleteRequest ausgelöst wird, aber es scheint, IIS fügt die Antwortheader nach alle Ereignisse in der Pipeline ausgeführt wurde, so denke ich, ich werde die X-Frame-Optionen in meinem Code ohne zu steuern IIS. –

Verwandte Themen