Es gibt ein paar verschiedene Arten von Proxy-Servern. Da Sie Anforderungsheader erwähnt haben, gehe ich davon aus, dass Sie über HTTP-Proxy-Server sprechen, die HTTP-Anfragen und nicht Pakete weiterleiten.
HINWEIS: Im speziellen Fall von HTTPS requests (TLS/SSL über CONNECT
), Proxy-Server wird nur vorwärts der Inhalt der TCP-Pakete (und ist nicht in der Lage, die Pakete, es sei denn, die als eine man-in-the-middle Proxy zu überprüfen) .
Natürlich ist es auf der Proxy-Software und deren Konfiguration abhängig ist, aber HTTP-Proxies sind erwartet, dass die W3C Guidelines for Web Content Transformation Proxies, zu folgen, die viele Dinge erklärt, aber die meisten einschlägig:
Anders als zwischen HEAD
und GET
konvertieren dürfen Proxys Request-Methoden nicht ändern.
Wenn die Anforderung eine Cache-Control: no-transform
Direktive enthält, dürfen Proxys die Anforderung nur ändern, um transparentem HTTP-Verhalten gemäß den Abschnitten in RFC 2616 Abschnitt 14.9.5 und Abschnitt 13.5.2 zu entsprechen und Header-Felder wie in beschrieben hinzuzufügen 4.1.6 Additional HTTP Header Fields.
Andere als die von RFC 2616 HTTP-Proxies erforderlichen Änderungen sollten nicht die Werte der Header-Felder außer den Feldern User-Agent
, Accept
, Accept-Charset
, Accept-Encoding
und Accept-Language
Header ändern und darf nicht Header-Felder löschen.
Proxies sollte die IP-Adresse des Initiators der Anforderung an das Ende einer durch Kommata getrennte Liste in einem X-Forwarded-For
HTTP-Header-Feld hinzufügen.
Proxies müssen (gemäß RFC 2616) ein HTTP-Header-Feld Via
enthalten.
Zusammenfassend kann man im Allgemeinen erwarten, dass diese HTTP-Header von einem standardkonformen Proxy geändert/hinzugefügt werden:
User-Agent
Accept
Accept-Charset
Accept-Encoding
Accept-Language
X-Forwarded-For
Via
Ich habe nicht den Teil "forward-Anfragen keine Pakete". Meinst du, dass es die HTTP-Anfrage von den eingehenden Paketen rekonstruieren und sie dann ändern wird? – Ashwin
@Ashwin: Ich glaube, Sie missverstehen das HTTP-Protokoll hier. HTTP ist ein Anwendungsprotokoll, das in der Schicht des _application_ [OSI-Modells] ist (http://en.wikipedia.org/wiki/OSI_model). Alle HTTP ‚Pakete‘ sind wirklich TCP-Pakete und HTTP befasst sich nicht mit Paketen, die direkt (dies geschieht alles auf der _transport_ und _network_ Schichten des [OSI-Modell] (http://en.wikipedia.org/wiki/OSI_model)). – Xenon
, wenn ich eine Anfrage im Bowser wie „www.google.com“ machen, reist diese Anforderung von der Anwendungsebene (Browser) direkt auf der physischen Ebene (das ist die NIC). Nun ruft der Proxy-Server sie ab und dekodiert dann die Daten der physikalischen Ebene in Schicht 2 usw. zum Transport (Schicht 4). Hier ändert er die Daten und leitet sie dann weiter? – Ashwin