Pam mae Go yn osgoi’r dirprwy ar gyfer localhost
Gwahaniaethwch rhwng eithriad loopback adeiledig Go a NO_PROXY, a chymharwch lwybro drwy’r amgylchedd â ProxyURL penodol.
Mae gan ddewiswr dirprwy Go sy’n seiliedig ar yr amgylchedd eithriad adeiledig ar gyfer localhost a chyrchfannau IP loopback. Nid yw gwagio NO_PROXY yn dileu’r eithriad hwnnw. Gall prawf lleol felly gysylltu’n uniongyrchol tra bo cais at enw gwesteiwr cyhoeddus yn defnyddio’r dirprwy yn ôl y disgwyl.
Mae’r rheol yn ymwneud â chyrchfan y cais. Nid yw’n eich atal rhag defnyddio gwrandäwr dirprwy sydd â’i gyfeiriad ei hun yn 127.0.0.1.
Archwiliwch y dewiswr heb anfon cais
package main
import (
"fmt"
"net/http"
"net/url"
)
func main() {
fixed, _ := url.Parse("http://203.0.113.10:8080")
for _, target := range []string{
"http://localhost:8000/",
"http://127.0.0.1:8000/",
"http://example.com/",
} {
request, _ := http.NewRequest("GET", target, nil)
discovered, err := http.ProxyFromEnvironment(request)
explicit, _ := http.ProxyURL(fixed)(request)
fmt.Println(target, discovered, explicit, err)
}
}
Os ydych am weld y gymhariaeth â’r amgylchedd, rhedwch y rhaglen gyda’r newidynnau dirprwy wedi’u gosod ar gyfer y broses. Dim ond gwerthuso’r dewiswyr y mae’r rhaglen; nid yw’n cysylltu â’r dirprwy enghreifftiol yn y dogfennau nac ag unrhyw gyrchfan.
Mae darganfod o’r amgylchedd a dewiswr penodol yn bolisïau gwahanol
Mae ProxyFromEnvironment yn ystyried cynllun y gyrchfan, gosodiadau’r amgylchedd a’r rheolau osgoi, gan gynnwys ei driniaeth arbennig o loopback. Mae ProxyURL yn dychwelyd URL y dirprwy a roddwyd ar gyfer pob cais sy’n cael ei basio i’r dewiswr hwnnw.
Felly gall cludiant penodol â ProxyURL wedi’i osod yn benodol anfon cais at gyrchfan leol drwy ddirprwy. Dim ond pan all y dirprwy gyrraedd y gyrchfan y gofynnwyd amdani mewn modd dilys y mae hyn yn ddefnyddiol. Nid localhost eich gliniadur yw localhost dirprwy pell, felly nid yw gorfodi’r llwybr yn brawf cysylltedd defnyddiol yn awtomatig.
Gwiriwch cyn i’r broses storio’i hamgylchedd yn y storfa dros dro
Mae cyfluniad dirprwy’r amgylchedd yn net/http safonol yn cael ei storio yn y storfa dros dro ar ôl ei ddefnyddio gyntaf. Nid yw newid newidyn amgylchedd yn ddiweddarach yn yr un rhaglen sy’n rhedeg yn ffordd ddibynadwy o ailadrodd prawf â chyfluniad newydd. Dechreuwch broses newydd â’r gwerthoedd bwriadedig, neu darparwch ddewiswr penodol yr ydych yn rheoli ei ymddygiad.
Mae’r ymddygiad loopback hwn yn berthnasol i ddewiswr dirprwy safonol Go 1.27.3. Gall ieithoedd a chleientiaid HTTP eraill ddefnyddio rheolau llwybro localhost gwahanol.