Bei Microsoft anmelden
Melden Sie sich an, oder erstellen Sie ein Konto.
Hallo,
Wählen Sie ein anderes Konto aus.
Sie haben mehrere Konten.
Wählen Sie das Konto aus, mit dem Sie sich anmelden möchten.

Problembeschreibung

Wenn Sie die Funktion IIS Common Gateway Interface (CGI) zum Hosten eines ausführbaren Programms verwenden, das mithilfe einer bestimmten Bibliothek Anforderungen umleitet, werden Anforderungen aufgrund des Vorhandenseins eines „PROXY“-Anforderungsheaders möglicherweise an die falsche Adresse weitergeleitet. Von mehreren Webanwendungsplattformen ist bekannt, dass sie diese Bibliothek verwenden. Hierzu zählen unter anderem PHP, Python und Go.

Ursache

Bei CGI handelt es sich um eine Schnittstelle, mit deren Hilfe ein Webserver Anwendungen hosten kann, die als ausführbare Prozesse ausgeführt werden. Wenn ein Webserver eine Anforderung empfängt, startet der Server einen neuen Prozess zur Verarbeitung dieser Anforderung. Nach Abschluss der Anforderung wird der Prozess beendet. Damit der Prozess Zugriff auf die angeforderten Daten hat, werden Anforderungsheader als Umgebungsvariablen verwendet, deren Namen „HTTP_“ vorangestellt wird. Deshalb weisen CGI-Prozesse für Anforderungen, die den Header „Proxy“ enthalten, die Umgebungsvariable „HTTP_PROXY“ auf, die denselben Wert wie der Anforderungsheader hat.

Die cURL-Befehlszeile und die Bibliothek werden in der Regel verwendet, damit verschiedene Anwendungstypen verschiedene Servertypen, einschließlich Webservern, anfordern können. Diese Bibliothek kann mithilfe von Befehlszeilenparametern konfiguriert werden. Die Konfigurationsparameter können aber auch aus den Umgebungsvariablen des Hostprozesses gelesen werden. „HTTP_PROXY“ ist einer von vielen Konfigurationsparametern, die von cURL verwendet werden. „HTTP_PROXY“ wird von cURL zum Senden einer HTTP-Anforderung über den konfigurierten Proxy verwendet.

Hinweis Dies hat nichts mit „HTTP_PROXY“ als Darstellung eines Clientanforderungsheaders zu tun.

Wenn cURL im Rahmen eines CGI-Prozesses gehostet wird und dieser Prozess eine Umgebungsvariable namens „HTTP_PROXY“ enthält, verwendet cURL den Wert dieser Umgebungsvariablen, um angeforderte Daten über den HTTP-Proxy zu senden, dessen Wert in der Umgebungsvariablen angegeben ist. Dies ist darauf zurückzuführen, dass cURL davon ausgeht, dass „HTTP_PROXY“ eine Konfigurationsanweisung und kein Clientanforderungsheader ist.

Abhilfe

Um dieses Problem zu umgehen, sollten Sie CGI nicht auf einem Server verwenden, auf dem IIS ausgeführt wird. CGI ist eine weitgehend veraltete Schnittstelle, die durch neuere und leistungsorientiertere Schnittstellen ersetzt werden. Insbesondere PHP, Python und Go sollten in IIS über FastCGI gehostet werden. FastCGI verwendet keine Umgebungsvariablen für Clientanforderungsheader, weshalb dieses Problem nicht auftritt. Für PHP verwenden jedoch manche Anwendungen möglicherweise die getenv()-Funktion von PHP zum Abrufen von Umgebungsvariablen. Selbst wenn PHP nicht im Rahmen eines CGI-Prozesses gehostet wird, wird das Verhalten von CGI repliziert, indem Anforderungsheaderwerte in die Daten eingefügt werden, die für die getenv()-Funktion verfügbar sind. Wenn Sie eine PHP-Anwendung verwenden, die HTTP_PROXY auf diese Weise abruft, sollten Sie den Headerwert löschen oder Anforderungen mit einem PROXY-Header ablehnen.

Wenn Sie aus irgendeinem Grund CGI verwenden müssen, sollten Sie Anforderungen, die einen Anforderungsheader namens „Proxy“ enthalten, löschen oder den Wert des Headers löschen.  Dies liegt daran, dass „Proxy“ kein Standardname für Anforderungsheader ist und der Header deshalb im Allgemeinen nicht von Browsern gesendet wird.

Führen Sie die folgende Befehlszeile aus, um eine Anforderung zu blockieren, die einen Proxy-Header enthält (die bevorzugte Lösung):

appcmd set config /section:requestfiltering /+requestlimits.headerLimits.[header='proxy',sizelimit='0']
Hinweis appcmd.exe befindet sich in der Regel nicht in diesem Pfad, sondern ist im Verzeichnis „%systemroot%\system32\inetsrv“ gespeichert.

Verwenden Sie die folgende URL-Rewriteregel, um den Wert des Headers zu löschen:

<system.webServer>
<rewrite>
<rules>
<rule name="Erase HTTP_PROXY" patternSyntax="Wildcard">
<match url="*.*" />
<serverVariables>
<set name="HTTP_PROXY" value="" />
</serverVariables>
<action type="None" />
</rule>
</rules>
</rewrite>
</system.webServer>


Hinweis URL-Rewrite ist ein herunterladbares Add-In für IIS und ist nicht im Lieferumfang der Standardinstallation von IIS enthalten.

Benötigen Sie weitere Hilfe?

Möchten Sie weitere Optionen?

Erkunden Sie die Abonnementvorteile, durchsuchen Sie Trainingskurse, erfahren Sie, wie Sie Ihr Gerät schützen und vieles mehr.

In den Communities können Sie Fragen stellen und beantworten, Feedback geben und von Experten mit umfassendem Wissen hören.

War diese Information hilfreich?

Wie zufrieden sind Sie mit der Sprachqualität?
Was hat Ihre Erfahrung beeinflusst?
Wenn Sie auf "Absenden" klicken, wird Ihr Feedback zur Verbesserung von Produkten und Diensten von Microsoft verwendet. Ihr IT-Administrator kann diese Daten sammeln. Datenschutzbestimmungen.

Vielen Dank für Ihr Feedback!

×