![]() |
Domainname bzw. IP-Adresse bekommen
Hi,
ich verwende die Indy-Komponenten TIdHTTPProxyServer. Dort kann ich den Header mittels der Variable AHeader und das Dokument mit ADocument auslesen. Mein Problem ist jetzt das ich in ADocument sowie AHeader aber nicht die Domain oder IP-Adresse bekomme. Gibts da ne Möglichkeit? Ich bekomme immer nur den relativen Pfad. Z. B. /index.php Ich brauche aber ![]() |
Re: Domainname bzw. IP-Adresse bekommen
Kennt sich damit den niemand aus?
|
Re: Domainname bzw. IP-Adresse bekommen
|
Re: Domainname bzw. IP-Adresse bekommen
Zitat:
Zitat:
![]() |
Re: Domainname bzw. IP-Adresse bekommen
Moin,
du koenntest versuchen, ueber den HTTP-Request dranzukommen. Dieser sieht z.B. so aus:
Code:
Der Host identifiziert die Root-Domain. Wie du ueber die Indys da drankommst, weiss ich jetzt aber auch nicht.
GET|POST|... dateiname.ext HTTP/1.1
HOST: w[b][/b]ww.deinedomain.com Connection: close Greetz alcaeus |
Re: Domainname bzw. IP-Adresse bekommen
Zitat:
|
Re: Domainname bzw. IP-Adresse bekommen
Hallo Andreas,
Zitat:
Zitat:
Grüße vom marabu |
Re: Domainname bzw. IP-Adresse bekommen
Viel einfacher, ARequestInfo.Host im OnCommandGet tuts auch ;)
Bei mir jedenfalls. |
Re: Domainname bzw. IP-Adresse bekommen
Zitat:
|
Re: Domainname bzw. IP-Adresse bekommen
Zitat:
|
Re: Domainname bzw. IP-Adresse bekommen
Oh sorry, sollte wohl genauer lesen :oops:
Beim TiDHTTPServer gibts das, beim Proxy wohl nicht. Aber im Header müsste es eigentlich drinstehen. Ansonsten musst du den Request auslesen den der Proxy weiterleiten soll. |
Re: Domainname bzw. IP-Adresse bekommen
Zitat:
Ist aber nicht im Header. Wie komme ich an den Request ran? |
Re: Domainname bzw. IP-Adresse bekommen
Keine Ahnung, hab den Proxy noch nie benutzt.
War auch nur ne Vermutung. Vielleicht kriegsts über die zugrunde liegende TCP-Verbindung. |
Re: Domainname bzw. IP-Adresse bekommen
Zitat:
BTW, ![]() Greetz alcaeus |
Re: Domainname bzw. IP-Adresse bekommen
Naja, die TCP-Verbindung weiß ja mit wem sie Verbunden ist, sonst wärs keine Verbindung.
Dazu braucht sie auch nix von HTTP zu wissen. Ansonsten würd ich sagen, statt TidHTTPProxyServer nen TidHTTPClient und TidHTTPServer nehmen ;) Dann kriegst alle Infos, kannst Requests filtern, blocken, loggen, cachen... |
Re: Domainname bzw. IP-Adresse bekommen
Aber irgendwo im inneren der Komponente muss ja der Host mal auftauchen. ich habe da die Variable LRemoteHost in IdHTTPProxyServer.pas gefunden. Leider weiß ich nicht wie ich die public machen kann damit ich den Wert von der Komponente bekomme.
|
Re: Domainname bzw. IP-Adresse bekommen
Zitat:
|
Re: Domainname bzw. IP-Adresse bekommen
Naja, der Server kriegt ein Request rein, das lässt du gleich den Client wieder an den eigentlichen Ziel-Server wegschicken.
Wenn der CLient dann ne Antwort kriegt gibt der Server das als Response her. Aber ich hab mal wieder keine Ahnung ob das geht, ich nehm ja an dass ein Proxy-Request ein getunnelter HTTP-Request ist (hab nix zu dem Thema gefunden). Den Indy-Client hab ich noch nie benutzt. Ich tests mal schnell :D //Edit: Also bei nem ganz schnellen Versuch krieg ich immer nur ne leere Seite zurück. Aber ich bleib dran!
Delphi-Quellcode:
//Edit²: ALso wenn man vor ARequestInfo.Host noch 'http://' + anhängt funktionierts für Text oder Bilder allein. Bilder in Seiten werden nicht angezeigt.
procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo); begin AResponseInfo.ContentText := IdHTTP1.Get(ARequestInfo.Host + ARequestInfo.Document); AResponseInfo.ContentLength := length(AResponseInfo.ContentText); AResponseInfo.WriteHeader; AResponseInfo.WriteContent; end; Das Problem hatte ich schonmal, das liegt am ContentType. |
Re: Domainname bzw. IP-Adresse bekommen
@SnuffMaster23, Edit²: Das Problem hatten wir (Andreas und ich) auch schon einmal. Auf Grund dieser Sache sind wir dann ja auch auf die IdHTTPProxyServer Komponente umgestiegen. Allerdings haben wir jetzt hier dieses dämliche Problem mit der unvollständigen URL.
Naja, hoffen wir mal, dass wir's irgedwann nochmal schaffen^^ |
Re: Domainname bzw. IP-Adresse bekommen
Ich hab jetzt mal ne "Log"-Funktion eingebaut.
Das mit den Bildern liegt nicht am Content-Type sondern am HTTP-Client! Wenn ich vor allen anderen Aktionen logge kommen alle Requests an. Wenn ich logge nachdem der Request weitergegeben wurde kommen Bilder so gut wie nie im Log an. Das liegt daran dass IdHTTP1.Get Exceptions produziert wenn Bilder Requested werden. Und jetzt bin ich verwirrt, ich mach wohl morgen weiter :D |
Re: Domainname bzw. IP-Adresse bekommen
Zitat:
Vielen, Vielen Dank ;-) Gute Nacht |
Re: Domainname bzw. IP-Adresse bekommen
Also ich hab jetzt mal die Exceptions mitloggen lassen.
Das einzige was dabei rauskam waren die Socket Errors 1022 und 1038. Zu allem Überfluss hab ich auch nix dazu gefunden :( Ich denk da modifizierst du noch einfacher den Indy-Proxy. Einfach bei den Properties das rein:
Delphi-Quellcode:
Und weiter unten (implementation):
private
function GetRemoteHost: string {??}; public property RemoteHost: string {??}; read GetRemoteHost;
Delphi-Quellcode:
getippt, nicht getestet ;)
function TIdHTTPProxyServer.GetRemoteHost;
begin Result := LRemoteHost; end; So müsste das funktioniern, wenn nicht muss es dir jemand anders erklären. |
Re: Domainname bzw. IP-Adresse bekommen
Habs jetzt geschafft. Hab in meinen Blog ein Tutorial geschrieben:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz