2017-06-13 2 views
1

Ich versuche zu überprüfen, ob es eine Ajax-Anfrage zu einer bestimmten URL gibt und wenn ja, dann versuche ich, ein Cookie zur Anfrage hinzuzufügen.HttpListner hört nicht

Aber mein HttpListner hört nur für localhost. Wenn ich versuche, eine andere URL zu geben, hört sie nicht zu.

Ich habe meine Firewall auch ausgeschaltet aber immer noch das gleiche Problem.

Bitte sagen Sie mir, wo ich einen Fehler mache.

Unten ist mein Code:

class Program 
{ 
    static void Main(string[] args) 
    { 
     HttpListener listner = new HttpListener(); 
     listner.Prefixes.Add("<my url>");//For example, https://www.google.co.in/ 
     listner.Start(); 
     HttpListenerContext context = listner.GetContext(); 

     HttpListenerRequest request = context.Request; 
     WebRequest webReq = WebRequest.Create(request.Url); 

     //Copying the headers 
     System.Collections.Specialized.NameValueCollection headers = request.Headers; 
     for (int i = 0; i < headers.AllKeys.Length; i++) 
     { 
      if (!WebHeaderCollection.IsRestricted(headers.AllKeys[i])) 
      { 
       webReq.Headers.Add(headers.AllKeys[i], headers[headers.AllKeys[i]]); 
      } 
     } 

     webReq.ContentLength = request.ContentLength64; 
     webReq.ContentType = request.ContentType; 
     webReq.Headers.Add(HttpRequestHeader.Cookie, "<My Cookie>"); 


     HttpListenerResponse response = context.Response; 
     WebResponse webResponse = webReq.GetResponse(); 
     webResponse.GetResponseStream().CopyTo(response.OutputStream); 

    } 
} 
+0

Ich bin ziemlich sicher, dass httplistener ist für die Herstellung von Webservern und dergleichen. Wenn Sie die URL auf google setzen, würde das bedeuten: "Ich möchte mit Webanfragen umgehen, die in Google eingehen", was nicht passieren wird. Was versuchst du damit zu tun? – James

+0

Wenn ich versuche, eine Cross-Origin-Anfrage mit $ .ajax zu senden, entfernt der Browser die Cookies, die die Anfrage authentifizieren. Also schreibe ich einen Proxy, der die Anfrage abfängt, die Kopfzeile hinzufügt und sie dann sendet. – Karthik

+0

Ich möchte Web-Anfragen bearbeiten, die google (Beispiel) von meinem Rechner – Karthik

Antwort

1

Was auch immer Präfixe für den Hörer hinzufügen, um Ihre lokalen Host-Maschine zu lösen. Stellen Sie sicher, dass der DNS-Server den Host korrekt auf dem Computer auflöst, auf dem Sie den Code ausführen.

Wenn Sie dies in einer Entwicklungsumgebung testen und/oder keine Kontrolle über den DNS-Server haben, fügen Sie einen Eintrag zur hosts-Datei hinzu, die den Hostnamen, den Sie verwenden möchten, auf Ihrem lokalen Rechner abbildet.

Die andere Sache, auf die Sie achten sollten, ist der Port. Stellen Sie sicher, dass nichts anderes auf dem Port zu hören ist, den Sie verwenden möchten.

+0

bedeutet es, dass der Hörer nicht zündet, wenn ich auf "https://google.com/" höre? – Karthik

+0

Sie müssen verstehen, wie ein Hostname aufgelöst wird. Sie können die DNS-Auflösung überschreiben, indem Sie einen Eintrag in Ihrer lokalen Hosts-Datei hinzufügen, der die Domain Google.com auf Ihren lokalen Computer verweist. Nur dann werden die Anfragen an Ihren lokalen Listener weitergeleitet. Nehmen Sie sich Zeit, um dies zu lesen: https://www.verisign.com/de_DE/website-presence/online/how-dns-works/index.xhtml – JuanR

+0

Lesen Sie auch dies: http://www.lifeasasysadmin.com/how- to-use-hosts-Datei zum Überschreiben-dns-für-lokalen-Test / – JuanR