Använda Dev Proxy med PowerShell

Överblick
Mål: Konfigurera PowerShell så att det fungerar med Dev Proxy
Tid: 5 minuter
Krav:Konfigurera Dev Proxy

Dev Proxy fungerar med PowerShell på alla operativsystem. På macOS och Linux identifierar PowerShell korrekt ändringar i systemproxyn och ingen extra konfiguration krävs. I Windows cachelagrar PowerShell proxyinställningar, vilket kräver extra steg.

macOS och Linux

I macOS och Linux identifierar PowerShell ändringar av systemproxy automatiskt. Starta Dev Proxy och använd PowerShell som vanligt – begäranden fångas upp utan någon extra konfiguration.

Windows

När du använder Dev Proxy med PowerShell i Windows kan det uppstå problem där PowerShell inte identifierar när systemproxyn startar eller stoppas. Det här problemet påverkar både Windows PowerShell (5.1) och PowerShell 7+ (Core).

Problemet

På Windows sparar PowerShell-sessioner systemets proxyinställningar i cache när de startas. Det innebär att om du:

  1. Öppna en PowerShell-session
  2. Starta Dev Proxy (som konfigurerar sig själv som systemproxy)
  3. Göra HTTP-begäranden från den ursprungliga PowerShell-sessionen

Begäranden dirigeras inte via Dev Proxy eftersom PowerShell använder de cachelagrade proxyinställningarna från när sessionen startade.

På samma sätt, om du:

  1. Starta Dev Proxy
  2. Öppna en PowerShell-session och gör begäranden (de fångas upp korrekt)
  3. Stop Dev Proxy
  4. Göra begäranden från samma PowerShell-session

Begäranden misslyckas eftersom PowerShell fortfarande försöker använda proxyn som inte längre finns.

Lösning: Starta om PowerShell-sessionen

Den enklaste lösningen är att starta om PowerShell-sessionen när du har startat eller stoppat Dev Proxy. Om du startar om sessionen kan PowerShell hämta de aktuella systemproxyinställningarna.

Alternativ: Ange proxyn manuellt

I stället för att förlita dig på systemproxyidentifiering kan du konfigurera Dev Proxy så att den inte registreras som systemproxy och ange proxyn manuellt i PowerShell.

Steg 1: Starta Dev Proxy utan systemproxy

Starta Dev Proxy med alternativet --as-system-proxy false :

devproxy --as-system-proxy false

Steg 2: Ange proxymiljövariabeln i PowerShell

I PowerShell-sessionen anger du HTTPS_PROXY miljövariabeln:

$env:HTTPS_PROXY = "http://127.0.0.1:8000"

Om du också behöver fånga upp HTTP-begäranden:

$env:HTTP_PROXY = "http://127.0.0.1:8000"

Steg 3: Rensa proxyn när du är klar

När du är klar med dev proxy rensar du miljövariablerna:

$env:HTTPS_PROXY = $null
$env:HTTP_PROXY = $null

Använda en PowerShell-profil

För att förenkla inställningen av proxyn kan du skapa funktioner i PowerShell-profilen. Lägg till följande i $PROFILE filen:

function Set-DevProxy {
    $env:HTTP_PROXY = "http://127.0.0.1:8000"
    $env:HTTPS_PROXY = "http://127.0.0.1:8000"
    Write-Host "Dev Proxy enabled"
}

function Clear-DevProxy {
    $env:HTTP_PROXY = $null
    $env:HTTPS_PROXY = $null
    Write-Host "Dev Proxy disabled"
}

Sedan kan du använda Set-DevProxy kommandon och Clear-DevProxy för att snabbt aktivera eller inaktivera proxyn i PowerShell-sessionen.