ເປັນຫຍັງ Go ຈຶ່ງຂ້າມພຣັອກຊີສຳລັບ localhost
ແຍກຂໍ້ຍົກເວັ້ນ loopback ທີ່ມີໃນ Go ອອກຈາກ NO_PROXY ແລະປຽບທຽບການກຳນົດເສັ້ນທາງຕາມສະພາບແວດລ້ອມກັບ ProxyURL ທີ່ລະບຸຊັດເຈນ.
ຕົວເລືອກພຣັອກຊີຕາມສະພາບແວດລ້ອມຂອງ Go ມີຂໍ້ຍົກເວັ້ນໃນຕົວສຳລັບ localhost ແລະປາຍທາງ IP loopback. ການລ້າງ NO_PROXY ໃຫ້ວ່າງບໍ່ໄດ້ລຶບຂໍ້ຍົກເວັ້ນນີ້. ດັ່ງນັ້ນ ການທົດລອງໃນເຄື່ອງອາດເຊື່ອມຕໍ່ໂດຍກົງ ໃນຂະນະທີ່ຄຳຂໍໄປຫາຊື່ໂຮສສາທາລະນະໃຊ້ພຣັອກຊີຕາມທີ່ຄາດໄວ້.
ກົດນີ້ກ່ຽວກັບປາຍທາງຂອງຄຳຂໍ. ມັນບໍ່ໄດ້ຫ້າມໃຊ້ຕົວຟັງພຣັອກຊີທີ່ມີທີ່ຢູ່ຂອງຕົນເອງເປັນ 127.0.0.1.
ກວດຕົວເລືອກໂດຍບໍ່ສົ່ງຄຳຂໍ
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)
}
}
ຖ້າຕ້ອງການເບິ່ງການປຽບທຽບກັບສະພາບແວດລ້ອມ ໃຫ້ແລ່ນໂປຣແກຣມໂດຍຕັ້ງຕົວແປພຣັອກຊີສຳລັບໂປຣເຊສ. ໂປຣແກຣມພຽງແຕ່ປະເມີນຕົວເລືອກ; ມັນບໍ່ເຊື່ອມຕໍ່ຫາພຣັອກຊີຕົວຢ່າງໃນເອກະສານ ຫຼືປາຍທາງໃດໆ.
ການຄົ້ນຫາຈາກສະພາບແວດລ້ອມ ແລະຕົວເລືອກທີ່ລະບຸຊັດເຈນເປັນນະໂຍບາຍຕ່າງກັນ
ProxyFromEnvironment ພິຈາລະນາສະຄີມປາຍທາງ, ຄ່າສະພາບແວດລ້ອມ ແລະກົດການຂ້າມພຣັອກຊີ ລວມທັງການຈັດການ loopback ແບບພິເສດ. ProxyURL ສົ່ງຄືນ URL ພຣັອກຊີທີ່ໃຫ້ໄວ້ສຳລັບທຸກຄຳຂໍທີ່ສົ່ງເຂົ້າຕົວເລືອກນັ້ນ.
ດັ່ງນັ້ນ transport ສະເພາະທີ່ມີ ProxyURL ລະບຸຊັດເຈນ ສາມາດສົ່ງຄຳຂໍໄປຫາປາຍທາງໃນເຄື່ອງຜ່ານພຣັອກຊີ. ມັນມີປະໂຫຍດພຽງເມື່ອພຣັອກຊີໄປເຖິງປາຍທາງທີ່ຂໍໄດ້ຢ່າງຖືກຕ້ອງ. localhost ຂອງພຣັອກຊີທາງໄກບໍ່ແມ່ນ localhost ຂອງແລັບທັອບທ່ານ, ດັ່ງນັ້ນການບັງຄັບເສັ້ນທາງຈຶ່ງບໍ່ແມ່ນການທົດສອບການເຊື່ອມຕໍ່ທີ່ມີປະໂຫຍດໂດຍອັດຕະໂນມັດ.
ກວດກ່ອນໂປຣເຊສຈະເກັບສະພາບແວດລ້ອມໄວ້ໃນແຄຊ
ຄ່າພຣັອກຊີຈາກສະພາບແວດລ້ອມຂອງ net/http ມາດຕະຖານຈະຖືກເກັບໃນແຄຊຫຼັງໃຊ້ຄັ້ງທຳອິດ. ການປ່ຽນຕົວແປສະພາບແວດລ້ອມພາຍຫຼັງໃນໂປຣແກຣມເກົ່າທີ່ກຳລັງແລ່ນ ບໍ່ແມ່ນວິທີທີ່ເຊື່ອຖືໄດ້ໃນການທົດສອບຄ່າໃໝ່ຊ້ຳ. ໃຫ້ເລີ່ມໂປຣເຊສໃໝ່ດ້ວຍຄ່າທີ່ຕ້ອງການ ຫຼືໃຫ້ຕົວເລືອກທີ່ລະບຸຊັດເຈນເຊິ່ງທ່ານຄວບຄຸມພຶດຕິກຳໄດ້.
ພຶດຕິກຳ loopback ນີ້ໃຊ້ກັບຕົວເລືອກພຣັອກຊີມາດຕະຖານຂອງ Go 1.27.3. ພາສາ ແລະໄຄລເອັນ HTTP ອື່ນອາດໃຊ້ກົດການກຳນົດເສັ້ນທາງ localhost ຕ່າງກັນ.