IIS-i CGI HTTP_PROXY päise taotlused võib suunata

Sümptomid

IIS-i Common Gateway Interface (CGI) funktsiooni kasutamisel majutamiseks käivitatava programmi, mida kasutada teatud teeki taotlused suunata taotlused võib valesti "PROXY" taotluse päise põhjal. Mitu web application platvormid nimetatakse seda kasutada. Nende hulka kuuluvad PHP, Python ja minge, teiste seas.

Põhjus

CGI on liides, mis võimaldab web server hosti rakendusi, mis töötavad kui käivitatava protsessid. Taotluse saamisel veebiserver server alustab uue protsessi ühe taotluse töötlemiseks. Kui taotlus on lõpule viidud, suletakse protsess. Selleks, et protsess on juurdepääs taotluse andmeid, taotluse päised on lisatud keskkonnamuutujaid, mis on "HTTP_" täiendatud oma nime. Seetõttu on CGI protsessid taotlused, mis sisaldavad päis, mille nimi on "Proxy" "HTTP_PROXY" keskkonnamuutuja, mis on sama väärtusega kui taotluse päis.

CURL käsurea ja teegi kasutatakse tavaliselt lubada mitmesugused rakendused esitada erinevaid servereid, sealhulgas veebiserveritesse. Selle teegi saab konfigureerida, kasutades käsurea parameetrite või saate lugeda oma konfiguratsiooniparameetrid hosti protsess keskkonnamuutujaid. "HTTP_PROXY" on üks palju konfiguratsiooniparameetrid cURL kasutatavad. "HTTP_PROXY" kasutatakse cURL HTTP-taotluse konfigureeritud puhvri kaudu saata.

Märkus. See on seotud "HTTP_PROXY" esitus kliendi taotluse päis.

Kui cURL majutatud CGI protsessi jooksul, ning see protsess sisaldab keskkonnamuutuja, mille nimi on "HTTP_PROXY", kasutab cURL selle väärtuseks soovitud andmed, mille väärtuseks on määratud keskkonnamuutuja HTTP puhverserveri kaudu saatmiseks. Selle põhjuseks on cURL eeldab, et "HTTP_PROXY" on konfiguratsiooni direktiivi ja mitte kliendi taotluse päis.

Lahendus

Selle probleemi vastukaaluna Ärge kasutage CGI serveris, kus töötab IIS-i. CGI on suurel määral aegunud liides, mis asendab uuem ja jõudlusega seotud liidesed. Täpsemalt peaks FastCGI IIS kaudu hostitud PHP, Python ja minna. FastCGI kasutada keskkonnamuutujaid kliendi taotluse päised ja ei ole probleemi. Aga php, mõned rakendused võivad kasutada PHPs getenv() funktsiooni keskkonnamuutujaid. Isegi kui PHP ei majutatud CGI protsessi, see tiražeerib CGI käitumine süstides taotluse päise väärtused andmed getenv() funktsiooni komplekt. PHP rakendus, mis toob HTTP_PROXY sel viisil kasutamisel kehtivad järgmised kergendamise tühjendamine päise väärtus või tagasi lükata taotlust puhverserveri päisega.

Kui teil on mingil põhjusel CGI kasutamiseks, taotlused, mis sisaldavad taotluse päise nimega "Proxy" blokeerida või tühjendage päise väärtus.  Seda sellepärast, et "Proxy" pole taotluse päise nimi ja brauserid üldiselt ei saada seda.

Blokeerimise taotlus, mis sisaldab puhvri päis (eelistatud lahendus), käivitage järgmist käsurida:

appcmd set config /section:requestfiltering / + requestlimits.headerLimits. [päis = puhverserveri, sizelimit = '0']
Märkus. Selle appcmd.exe ei ole tavaliselt tee ja võib leida %systemroot%\system32\inetsrv kataloog

Tühjendage päise väärtus, saate kasutada järgmist URL-i ümberkirjutamise reegel:

<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>


Märkus. URL-i ümberkirjutamise on ka allalaaditav lisandmoodul IIS-i ja IIS-i installimisel ei kaasata.

Kas vajate veel abi?

Täiendage oma oskusi
Tutvuge koolitusmaterjalidega
Kasutage uusi funktsioone enne teisi
Liitu Microsofti Insideri programmis osalejad

Kas sellest teabest oli abi?

Täname tagasiside eest!

Täname tagasiside eest! Tundub, et võiksime teid kokku viia ühega meie Office'i tugiagentidest, kes aitab teil probleemi lahendada.

×