Proxy Algorithmus



  • hallo

    ich weiß leider nicht so recht in welches Forum ich mein Problem posten soll. Versuche eine Proxy-Switch in C++ zu entwickeln. Der funktioniert auch schon ganz gut. Es ist nichts weiter als das Abfangen der Browser Request's, diese an einen Public-Proxy weiterzuleiten und dann von Public-Proxy die Antwort zu bekommen und diese an den Browser weiterzuleiten. Wie bereits erwähnt funktioniert er auch schon bis auf eine Sache.
    Wenn ich vom Proxy-Server die Antwort (Response Header)

    HTTP/1.0 302 Moved
    Location: ....
    Via: ....
    Connection: Close

    bekomme. Wenn das an meinen Browser zurückgesendet wurde, bricht dieser ab und erstellt keinen neuen Request mit dem Inhalt der in "Location: ..." steht. Erstaunlicher Weise ist das sowohl Betriebsystemabhängig als auch Browserabhängig.

    Hier mal meine Erfahrungswerte:
    Mozilla 1.7 auf WinXP -> geht nicht
    IE 6.0 auf WinXP -> geht nicht
    Opera 7.2 auf WinXP -> geht ( startet einen neuen Request mit dem Inhalt von "Location:" an mein Programm

    Mozilla auf Win98SE -> geht (macht auch neuen Request)
    IE auf Win98SE -> konnt ich leider net ganz testen

    Weiterhin hab ich das ganze auch schon mit nem sniffer verfolgt.
    in folgenden Konfigurationen:

    1. Browser über mein Programm
    2. Broswer direkt in Netz (ohne mein Programm)
    3. Browser direkt über den im Programm verwendeten Proxy

    wie bereits erwähnt kommt bei 1. kein neuer Request
    2. und 3. funktionieren mit dem entsprechenden Response-Header wunderbar und starten eine neue Anfrage.

    Hab probiert das Connection: Close aus der Antwort zu entfernen, mich in der Via: -Zeile einzutragen (auf w3c.org gelesen) und hab probiert den Thread der das http/1.0 302 Moved vom Server empfängt sofort nach empfang zu töten und den Browser somit zu zwingen die neue Anfrage auf den listen-geschalteten Port in einem bereits gestarteten anderen Thread zu senden.

    Ich benutze wie gesagt C++ und die einfachen Socket-Funktionen wie bind(),listen(),accept(),send() und recv()

    Seiten bei denen ich keinen solchen Response-Header vom Server bekomme, werden mit meinem Programm wunderbar geöffnet und dargestellt.

    den 302 Found-Response-Header kann mein Programm auch wunderbar verarbeiten.

    Vielleicht hat einer von Euch noch Ideen woran es liegen könnte? 😕 Ich bin echt mit meinem Latein am Ende.
    Vielleicht kennt sich ja jemand mit dieser Art der Netzprogrammierung aus und hatte schonmal ähnlich Probleme oder kennt vielleicht jemand das/den genaue(n) Protokoll/Ablauf für die Verbindungsherstellung / Datenübertragung / Verbindungsabbau beim arbeiten mit Proxy-Server. Vielleicht liegt da ja mein Problem.

    Mir wurde berichtet, das hier viele fähige Leute am Start sind. Auch nur kleine Hinweise würden helfen

    BIG BIG THX

    Robert


Anmelden zum Antworten