2012-08-08 17 views
5

Wenn Sie Fiddler verwenden, erscheint ein Warndialog.Fiddler: Wie überschreiben Header Host

Fiddler has detected a protocol violation in session #14. 

The Request's Host header did not match the URL's host component. 

URL Host: proxy.music.pp.com 
Header Host: 119.147.22.41 

Und es zeigt, dass Fiddler HTTP Header des Wirtes auf „proxy.music.pp.com“ geändert wird, ist es eine Möglichkeit, Fiddler Wechsel zu deaktivieren?

+0

Welcher Client generiert diesen (illegalen) Datenverkehr? – EricLaw

Antwort

1

Sie können dies mit Regeln tun.

Gehen Sie in Anpassen Regeln, und die Funktion finden: OnBeforeRequest(oSession: Session)

Dann fügen Sie die folgenden als letzte Zeile dieser Funktion:

if (oSession.HostnameIs("proxy.music.pp.com")) { oSession.host = "119.147.22.41"; } 
+0

Es wird immer noch der Fehler der Protokollverletzung angezeigt, aber es wird die IP-Adresse als HTTP-Header-Host verwenden. – Peter

+0

Dies ändert auch den Hostnamen, an den die Anfrage gesendet wird. Die Frage war, Fiddler davon abzuhalten, den Host-Header zu überschreiben. –

7

Aus meiner book:

Swap der Host Header

Wenn Fiddler eine Anfrage erhält, deren URL nicht matc In seinem Host-Header wird der ursprüngliche Host-Wert im Sitzungsflag X-Original-Host gespeichert, und dann wird der Wert Host durch den von der URL analysierten Host ersetzt. Das folgende Skript, das in die Funktion BeforeRequest Ihres FiddlerScript eingefügt wird, kehrt das Verhalten um, indem es die Anforderung an den vom ursprünglichen Host-Header angegebenen Host weiterleitet.

if (oSession.BitFlags & SessionFlags.ProtocolViolationInRequest) 
{ 
    var sOverride = oSession["X-Original-Host"]; 
    if (!String.IsNullOrEmpty(sOverride)) 
    { 
    oSession["X-overrideHost"] = sOverride; 
    oSession["ui-backcolor"] = "yellow"; 

    // Be sure to bypass the gateway, otherwise overrideHost doesn't work 
    oSession.bypassGateway = true; 
    } 
} 
0

Ich verstand nicht, was der "url host" wurde sein soll - ich meine, in der Regel gibt es nur die Host-Header in HTTP.

näherer Blick scheint es, dass diese Verletzung für eine erste Proxy „Setup“ Anforderung auftritt, die wie folgt aussieht:

CONNECT targaryen:45633 HTTP/1.1 
Host: targaryen 

Dies ist, wo der Fehler macht Sinn für mich.

Verwandte Themen