Skriv WebProxy-undantag som reguljära uttryck
Bygg ett giltigt undantagsuttryck för System.Net.WebProxy med escapade punkter och explicita värdnamnsgränser i stället för ett skalliknande jokertecken.
BypassList-argumentet i System.Net.WebProxy innehåller reguljära uttryck. Ett mönster som *.office.example är ogiltigt eftersom den inledande stjärnan inte har något föregående uttryck att upprepa.
För HTTP- och HTTPS-förfrågningar till office.example och dess underdomäner kan en PowerShell-konfiguration använda:
$bypass = @('^https?://([a-z0-9-]+\.)*office\.example(:[0-9]+)?$')
$proxy = [System.Net.WebProxy]::new(
'http://proxy.example:8080',
$false,
[string[]]$bypass
)
De escapade punkterna matchar bokstavliga punkter. Den upprepade gruppen för värdnamnsetikett tillåter både basdomänen och namn under den. Ankarna håller ett namn som office.example.other.test utanför denna regel. PowerShell-strängar inom enkla citattecken bevarar de omvända snedstreck som uttrycket använder.
Den nuvarande .NET-implementeringen matchar dessa uttryck mot målets schema, värdnamn och icke-standardport. Den omfattar inte förfrågans sökväg eller frågesträng. Den valfria portgruppen tillåter därför även icke-standardportar; ta bort eller begränsa den om policyn kräver en viss tjänst.
BypassProxyOnLocal är false i det här exemplet så att regex-policyn kan granskas separat från den extra undantagsinställningen. Koppla det resulterande proxyobjektet till den HTTP-klient som ska använda det. För ett tillåtet offentligt URL-test utanför undantagsdomänen kan en HTTP-post från HTTP proxy list ange sin adress, utan ett konfigurerat proxykonto.
Använd IsBypassed med representativa Uri-värden för att granska routingbeslutet: basdomänen, en underdomän, en orelaterad extern värd och ett vilseledande längre suffix. Ett true-resultat betyder att direkt åtkomst valdes; det bevisar inte att den direkta destinationen är nåbar.