Vidarebefordra portar från en terminal
En server som du startar i ett samtals terminal publiceras bara för den
ytan. Portpanelen upptäcker lyssnare som den här appen har startat där,
mappar dem och ger dig en adress för varje plats du kan tänkas nå dem från.
Två ytor kan båda lyssna på 5173; deras mappningar blandas aldrig.
Ingenting här öppnar upp maskinen: varje väg skapas av servern, på begäran, och dör med terminalen eller stationen.
Se vad som lyssnar
Avsnitt med rubriken “Se vad som lyssnar”- Öppna samtalets Terminal (VM) eller värdskal (i en yta eller på en PR-sida).
- Starta din server –
pnpm dev,python -m http.server 8000, vad som helst. - Inom några sekunder får kontaktikonen i terminalens övre högra hörn en prick. Klicka på den.
Panelen listar varje lyssnande port med processen som äger den, som
3000 → 3000: porten som processen band till till vänster, porten som den
svarar på lokalt till höger (samma nummer närhelst den var ledig på din
maskin). Varje rad säger också om localhost på skrivbordet, Webbläsare (VM)
och Android kan nå den.
Upptäckten är avgränsad: en Terminal (VM) avfrågas inuti den gästen; ett värdskal avfrågas från den sessionens PTY-processträd. Andra ytor, och andra processer på din Mac, listas inte.
Nya portar i den här terminalen vidarebefordras automatiskt. Stäng av Vidarebefordra portar automatiskt i samma panel om du bara vill ha dem du lägger till själv.
Nå den från den här datorn
Avsnitt med rubriken “Nå den från den här datorn”Använd Kopiera lokal URL på raden – http://localhost:3000.
Vidarebefordran lyssnar bara på loopback, så ingenting annat i ditt nätverk
kan se den.
Om två ytor båda exponerar gästporten 5173 och din maskin redan har
127.0.0.1:5173, behåller den andra ytan gästporten 5173 och får en
tillfällig lokal port. Kopiera lokal URL använder siffran till höger.
I ett värdskal finns processen redan på din maskin. Att mappa samma lokala port har ingen effekt; väljer du en annan lokal port binds en loopback-proxy till den du valde.
--host (eller att binda 0.0.0.0) gör inte att en avskild Webbläsare
(VM) kan nå en server på Macen. Gästen har sin egen loopback; servern
planterar en tunnel in i den gästen när fliken Webbläsare finns i samma
yta.
Nå den från Webbläsare (VM)
Avsnitt med rubriken “Nå den från Webbläsare (VM)”Öppna den avskilda webbläsaren i samma samtal. Skriv
localhost:<left-hand port> – numret som processen band till. En ommappning
(5173 → 3000) svarar också på numret till höger i den webbläsaren, så
Kopiera lokal URL fungerar där också. En agents browser_use kan navigera
till någon av dem. En server i yta A visas aldrig som localhost:5173 i yta
B:s webbläsare.
Använd localhost, inte en LAN-IP och inte --host. Gästen har sin egen
loopback; tunneln lyssnar där på både IPv4 och IPv6.
Sidor som öppnar många anslutningar på en gång (dussintals resurser, en live reload-socket) delar samma tunnel. Webbläsare (VM) multiplexar dem över en enda persistent exec, så en skur av hämtningar startar inte en process per anslutning och slår inte i tidsgränsen som en vit sida.
Inom en yta vinner en vidarebefordran från Terminal (VM) över ett värdskal på samma nummer. Mellan ytor finns ingen prioritet – de är åtskilda mappningar.
Nå den från Android
Avsnitt med rubriken “Nå den från Android”Öppna den ytans Android-flik. Emulatorns localhost:<port> vänds då mot
den här ytans publicerade port (adb reverse). En emulator är enhetsglobal:
ansluter du yta B riktas :5173 om till B och A:s försvinner. Stäng fliken,
och de omvända vidarebefordringar som den här stationen lade upp tas bort.
iOS-simulatorn är redan Macen – ingen omvändning. En fysisk iPhone behöver fortfarande en LAN-delning.
Dela den i ditt nätverk
Avsnitt med rubriken “Dela den i ditt nätverk”⋯ → Dela på det lokala nätverket publicerar porten på
<server-ip>:<random port> – användbart för att öppna sidan i telefonen,
eller när servern körs på en annan maskin.
- LAN-porten tilldelas alltid av operativsystemet, aldrig gästens nummer, så exponeringen är en avsiktlig, synlig adress i stället för en som går att gissa.
- Den förblir privat (endast loopback) tills du slår om den, och ⋯ → Endast lokalt tar den av nätverket igen.
Ge den ett namn – med HTTPS
Avsnitt med rubriken “Ge den ett namn – med HTTPS”⋯ → Ange en webbläsardomän (.test) tilldelar porten en dev-domän som
myapp.test. I Webbläsare (VM) laddar https://myapp.test då din server med
ett giltigt hänglås – användbart för allt som beter sig annorlunda på en
namngiven origin eller i en säker kontext (cookies, service workers,
OAuth-callbackar).
- Domäner måste sluta på
.testeller.localhost– de två toppdomäner som är reserverade för utveckling, så ett dev-namn aldrig kan skugga en riktig webbplats. - Domännamn är unika på servern; portnummer är det inte. Två ytor får
båda använda
5173, men de kan inte båda göra anspråk påmyapp.test. - Certifikatet kommer från en lokal certifikatutfärdare som skapas på din server första gången det behövs. Dess nycklar ligger under serverns datakatalog och hamnar aldrig i någon gäst; den avskilda webbläsaren litar på exakt den enda nyckeln, så TLS mot det riktiga internet valideras fortfarande normalt.
- Domänen löses bara inuti Webbläsare (VM). Din egen webbläsare på värden
använder
localhost:<port>i stället. - Även vanlig
http://myapp.testfungerar.
Vidarebefordra en port för hand
Avsnitt med rubriken “Vidarebefordra en port för hand”Lägg till port längst ned i panelen mappar en port innan (eller oavsett om) något lyssnar på den. En manuell vidarebefordran behåller sin adress medan din server startar om – raden visar lyssnar inte tills den är tillbaka – medan automatiska vidarebefordringar försvinner när deras port gör det. I ett värdskal kan du också ange en annan lokal port.
Hur det hålls avgränsat
Avsnitt med rubriken “Hur det hålls avgränsat”Portar är nycklade efter arbetsyta och yta. Hypervisorns egen portmappning är fast när en maskin startar, så en Terminal (VM) färdas över två smala kanaler som servern styr: en i förväg skapad inkommande bana in i gästen som vägrar ansluta till någon port som gästen faktiskt inte lyssnar på, och omvända tunnlar som servern håller öppna för Webbläsare (VM) och Android. Ett värdskal skannar aldrig hela maskinen. Ingen lyssnare skapas någonsin inuti en gäst som servern inte själv har satt dit, och allt rivs ned med terminalen eller stationen. Designen förklaras i Stationer och avskilda miljöer; de exakta reserverade portarna och domänreglerna finns i stationsreferensen.
Relaterat
Avsnitt med rubriken “Relaterat”- Ge en agent en maskin att testa på – att öppna, övervaka och ta över stationer
- Stationsreferens – reserverade portar, dev-toppdomäner, standardvärden