Skriv WebProxy-undtagelser som regulære udtryk
Byg et gyldigt undtagelsesudtryk til System.Net.WebProxy med escaped punktummer og eksplicitte værtsnavngrænser i stedet for et shell-lignende wildcard.
BypassList-argumentet i System.Net.WebProxy indeholder regulære udtryk. Et mønster som *.office.example er ugyldigt, fordi den indledende stjerne ikke har noget foregående udtryk at gentage.
For HTTP- og HTTPS-anmodninger til office.example og dets underdomæner kan en PowerShell-konfiguration bruge:
$bypass = @('^https?://([a-z0-9-]+\.)*office\.example(:[0-9]+)?$')
$proxy = [System.Net.WebProxy]::new(
'http://proxy.example:8080',
$false,
[string[]]$bypass
)
De escaped punktummer matcher bogstavelige punktummer. Den gentagne gruppe for værtsnavnets etiket tillader både basisdomænet og navne under det. Ankerne holder et navn som office.example.other.test uden for denne regel. PowerShell-strenge med enkelte citationstegn bevarer de omvendte skråstreger, som udtrykket bruger.
Den nuværende .NET-implementering matcher disse udtryk mod destinationens skema, værtsnavn og ikke-standardport. Den omfatter ikke anmodningens sti eller forespørgselsstreng. Den valgfrie portgruppe tillader derfor også ikke-standardporte; fjern eller indsnævr den, hvis politikken kræver en bestemt tjeneste.
BypassProxyOnLocal er false i dette eksempel, så regex-politikken kan undersøges separat fra den ekstra undtagelsesindstilling. Knyt det resulterende proxyobjekt til den HTTP-klient, der skal bruge det. Til en tilladt offentlig URL-test uden for undtagelsesdomænet kan en HTTP-post fra HTTP proxy list levere sin adresse, uden en konfigureret proxykonto.
Brug IsBypassed med repræsentative Uri-værdier til at undersøge routingbeslutningen: basisdomænet, et underdomæne, en uvedkommende ekstern vært og et vildledende længere suffiks. Et true-resultat betyder, at direkte adgang blev valgt; det beviser ikke, at den direkte destination kan nås.