ແຖວຄຳຮ້ອງທີ່ນຳທາງ HTTP ຂອງ Node ຜ່ານ proxy
ສ້າງຄຳຮ້ອງ HTTP ຜ່ານ proxy ແບບທຳມະດາດ້ວຍລູກຄ້າຫຼັກຂອງ Node ໂດຍແຍກຈຸດສຸດທ້າຍຂອງການເຊື່ອມຕໍ່, ເປົ້າໝາຍສົມບູນ ແລະ ຫົວຂໍ້ Host.
ໃນຄຳຮ້ອງ HTTP ທຳມະດາຜ່ານ proxy ທີ່ສົ່ງຕໍ່, Node ເຊື່ອມຕໍ່ກັບ proxy ແລະ ສົ່ງ URL ປາຍທາງໃນແຖວຄຳຮ້ອງ. ສາມຄ່າອະທິບາຍຄຳຮ້ອງດຽວນັ້ນ:
| ຄ່າ | ຕົວຢ່າງ |
|---|---|
| ຈຸດສຸດທ້າຍຂອງການເຊື່ອມຕໍ່ TCP | proxy.example:8080 |
| ເປົ້າໝາຍຄຳຮ້ອງ | http://example.com/news?q=proxy |
| ຫົວຂໍ້ Host | example.com |
ຕົວຢ່າງ Node 22 ນີ້ເຮັດໃຫ້ການແຍກຊັດເຈນ:
const http = require('node:http');
const destination = new URL('http://example.com/news?q=proxy');
const request = http.get({
hostname: 'proxy.example',
port: 8080,
path: destination.href,
headers: { Host: destination.host },
signal: AbortSignal.timeout(15000),
}, (response) => {
console.log(response.statusCode);
response.on('error', console.error);
response.resume();
});
request.on('error', console.error);
ຈຸດສຸດທ້າຍເປັນບ່ອນວ່າງ; ເລືອກຜູ້ສະໝັກຈາກ ລາຍຊື່ proxy HTTP ສຳລັບການທົດສອບ HTTP ສາທາລະນະ ແລະ ກວດກາຄຳຕອບຂອງມັນ. ຕົວຢ່າງລະບາຍຄຳຕອບຫຼັງຈາກພິມສະຖານະ; ແອັບພລິເຄຊັນສາມາດໃຊ້ເນື້ອໃນແທນ. ຄຳຖາມຍັງເປັນສ່ວນໜຶ່ງຂອງເປົ້າໝາຍຄຳຮ້ອງ.
ເປັນຫຍັງ URL ເຕັມຈຶ່ງຢູ່ທີ່ນັ້ນ
ເຊີບເວີຕົ້ນກຳເນີດປົກກະຕິໄດ້ຮັບເປົ້າໝາຍເຊັ່ນ /news?q=proxy. proxy ທີ່ສົ່ງຕໍ່ກໍຕ້ອງການປາຍທາງ, ດັ່ງນັ້ນ HTTP/1.1 ກຳນົດເປົ້າໝາຍໃນຮູບແບບສົມບູນ:
GET http://example.com/news?q=proxy HTTP/1.1
Host: example.com
ຕາມກົດຂອງ HTTP/1.1, proxy ທີ່ໄດ້ຮັບຮູບແບບສົມບູນຈະໃຊ້ສິດອຳນາດຂອງ URI ເມື່ອສົ່ງຕໍ່ ແລະ ແທນຊ່ອງ Host ທີ່ໄດ້ຮັບບໍ່ສອດຄ່ອງ. ການສົ່ງຫົວຂໍ້ Host ປາຍທາງທີ່ສອດຄ່ອງຍັງເຮັດໃຫ້ຄຳຮ້ອງອອກໄປບໍ່ກຳກວມ. ຊື່ໂຮສຂອງການເຊື່ອມຕໍ່ Node ແມ່ນຕົວກາງ, ດັ່ງນັ້ນຕັ້ງຫົວຂໍ້ຢ່າງຕັ້ງໃຈ ແທນທີ່ຈະອີງໃສ່ທີ່ຢູ່ເຊື່ອມຕໍ່ນັ້ນ.
ຖ້າຕ້ອງການກວດສອບຕົວຕົນ, ຂໍ້ມູນຢືນຢັນຂອງ proxy ເປັນຂອງບາດກ້າວຂອງມັນເອງ. ຕົວເລືອກຄຳຮ້ອງ auth ຂອງ Node ສ້າງຫົວຂໍ້ Authorization ສຳລັບຊັບພະຍາກອນ; ມັນບໍ່ແມ່ນຕົວເລືອກເຂົ້າສູ່ proxy ທົ່ວໄປ. ໃຊ້ໂຄງການທີ່ proxy ຕ້ອງການ ແລະ ລູກຄ້າ proxy ທີ່ເໝາະສົມ ເມື່ອການແລກປ່ຽນສັບສົນກວ່າ.
HTTPS ເພີ່ມອຸໂມງ
ຕົວຢ່າງນີ້ກວມເອົາການສົ່ງຕໍ່ HTTP ທຳມະດາ. ການເຊື່ອມຕໍ່ HTTPS ຜ່ານ proxy HTTP ປົກກະຕິຈະຮ້ອງຂໍ CONNECT example.com:443 ກ່ອນ, ແລ້ວເລີ່ມ TLS ໄປຫາປາຍທາງພາຍໃນອຸໂມງທີ່ຍອມຮັບ. ການປ່ຽນ URL ຂອງຕົວຢ່າງເປັນ HTTPS ບໍ່ໄດ້ເພີ່ມຂັ້ນຕອນເຫຼົ່ານັ້ນ.
ສຳລັບ HTTPS ຫຼື ພາລະວຽກປະສົມ, ໃຊ້ຕົວແທນ ຫຼື ຕົວສົ່ງ proxy ທີ່ຖືກດູແລພ້ອມການສະໜັບສະໜູນອຸໂມງທີ່ຕ້ອງການ. ສຳລັບເວີຊັນ Node ທີ່ເຂົ້າກັນໄດ້, ທາງເລືອກໜຶ່ງແມ່ນ fetch ຂອງ Undici ກັບ ProxyAgent. ເກັບຕົວຢ່າງລູກຄ້າຫຼັກນ້ອຍນີ້ໄວ້ສຳລັບກໍລະນີທີ່ການແລກປ່ຽນ HTTP ທຳມະດາເອງແມ່ນສິ່ງທີ່ທ່ານຕ້ອງຄວບຄຸມ ຫຼື ເຂົ້າໃຈ.