Laini ìbéèrè tó ń darí HTTP Node kọjá proxy
Kọ́ ìbéèrè HTTP proxy tó rọrùn pẹ̀lú ẹrọ àkọ́kọ́ Node nípa pínpín ibi ìparí ìsopọ̀, àfojúsùn kíkún àti orí Host.
Nínú ìbéèrè HTTP lasan nípasẹ̀ proxy tó ń tẹ̀síwájú, Node so pọ̀ mọ́ proxy, ó sì fi URL gbèngbèé ránṣẹ́ nínú laini ìbéèrè. Àwọn iye mẹ́ta ló ṣàpèjúwe ìbéèrè kan náà:
| Iye | Àpẹẹrẹ |
|---|---|
| Ibi ìparí ìsopọ̀ TCP | proxy.example:8080 |
| Àfojúsùn ìbéèrè | http://example.com/news?q=proxy |
| Orí Host | example.com |
Àpẹẹrẹ Node 22 yìí jẹ́ kí pínpín náà hàn kedere:
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);
Ibi ìparí jẹ́ ààyè àpótí; yan olùdíje láti inú àkójọ proxy HTTP fún ìdánwò HTTP gbogbo ènìyàn kí o sì yẹ ìdáhùn rẹ̀ wò. Àpẹẹrẹ náà ń tú ìdáhùn náà jáde lẹ́yìn títẹ̀ ipò; ohun èlò lè lo ara náà dípò. Ìbéèrè náà ṣì jẹ́ apá kan àfojúsùn ìbéèrè.
Ìdí tí URL kíkún fi yẹ níbẹ̀
Olùpèsè àkọ́kọ́ máa ń gba àfojúsùn bíi /news?q=proxy. Proxy tó ń tẹ̀síwájú nílò ibi gbèngbèé pẹ̀lú, nítorí náà HTTP/1.1 ń ṣàlàyé àfojúsùn ní ìrísí kíkún:
GET http://example.com/news?q=proxy HTTP/1.1
Host: example.com
Lábẹ́ àwọn òfin HTTP/1.1, proxy tó gba ìrísí kíkún máa ń lo àṣẹ URI nígbà tó ń fi ránṣẹ́, ó sì rọ́pò pápá Host tí kò báamu tí ó gbà. Fífi orí Host àfojúsùn tó báamu ránṣẹ́ ṣì ń jẹ́ kí ìbéèrè tó ń jáde má ṣe àìdánilójú. Orúkọ olùgbàlejò ìsopọ̀ Node ni alárinà, nítorí náà gbé orí náà kalẹ̀ pẹ̀lú ìdí dípò gbígbẹ́kẹ̀lé àdírẹ́sì ìsopọ̀ yẹn.
Bí ìjẹ́rìí bá pọn dandan, àwọn ẹ̀rí proxy jẹ́ ti ìrékọjá rẹ̀ fúnra rẹ̀. Àṣàyàn ìbéèrè auth Node ń dá orí Authorization fún ohun àmúṣọrọ̀; kì í ṣe àṣàyàn ìwọlé proxy gbogboogbò. Lo ètò tí proxy ń béèrè àti ẹrọ proxy tó yẹ nígbà tí pàṣípààrọ̀ bá díjú.
HTTPS ń fi ọ̀nà àbẹ́wọ̀ kún
Àpẹẹrẹ yìí bo fífi HTTP lasan ránṣẹ́. Ìsopọ̀ HTTPS nípasẹ̀ proxy HTTP aṣojúí máa ń béèrè CONNECT example.com:443 lákọ̀ọ́kọ́, lẹ́yìn náà ó bẹ̀rẹ̀ TLS sí àfojúsùn nínú ọ̀nà àbẹ́wọ̀ tí wọ́n gbà. Yíyí URL àpẹẹrẹ náà padà sí HTTPS kò fi àwọn ìpele yẹn kún.
Fún HTTPS tàbí ẹrù ìdàpọ̀, lo aṣojú tàbí olùfiránṣẹ́ proxy tó ń ṣe àtọ́jú pẹ̀lú àtìlẹ́yìn ọ̀nà àbẹ́wọ̀ tó pọn dandan. Fún àwọn ẹ̀yà Node tó báamu, àṣàyàn kan ni fetch Undici pẹ̀lú ProxyAgent. Pa àpẹẹrẹ ẹrọ àkọ́kọ́ kékeré yìí mọ́ fún àwọn ìgbà tí pàṣípààrọ̀ HTTP lasan fúnra rẹ̀ jẹ́ ohun tí o nílò láti darí tàbí lóye.