გამტარი პროქსის გავლით ჩვეულებრივი HTTP მოთხოვნისას Node უკავშირდება პროქსის და აგზავნის დანიშნულების 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);

ბოლო წერტილი დროებითია; საჯარო HTTP ტესტისთვის აირჩიეთ კანდიდატი HTTP პროქსების სიიდან და შეამოწმეთ მისი პასუხი. მაგალითი პასუხს ცლის სტატუსის დაბეჭდვის შემდეგ; აპლიკაციას შეუძლია ამის ნაცვლად სხეულის მოხმარება. შეკითხვა რჩება მოთხოვნის სამიზნის ნაწილად.

რატომ ეკუთვნის სრული URL იქ

წყაროს სერვერი ჩვეულებრივ იღებს სამიზნეს, როგორიცაა /news?q=proxy. გამტარ პროქსის ასევე სჭირდება დანიშნულება, ამიტომ HTTP/1.1 განსაზღვრავს სამიზნეს აბსოლუტურ ფორმაში:

GET http://example.com/news?q=proxy HTTP/1.1
Host: example.com

HTTP/1.1-ის წესების თანახმად, აბსოლუტური ფორმის მიმღები პროქსი გადაცემისას იყენებს URI-ის უფლებამოსილებას და ცვლის არათანმიმდევრულ მიღებულ Host ველს. თანმიმდევრული დანიშნულების Host თავსართის გაგზავნა მაინც გამავალ მოთხოვნას ცალსახად ტოვებს. Node-ის კავშირის ჰოსტის სახელი შუამავალია, ამიტომ თავსართი განზრახ დააყენეთ იმ კავშირის მისამართზე დაყრდნობის ნაცვლად.

თუ ავტორიზაცია საჭიროა, პროქსის სერტიფიკატები მის საფეხურს ეკუთვნის. Node-ის auth მოთხოვნის პარამეტრი ქმნის Authorization თავსართს რესურსისთვის; ეს არ არის პროქსიში შესვლის ზოგადი პარამეტრი. როცა გაცვლა უფრო რთულია, გამოიყენეთ პროქსის მოთხოვნილი სქემა და შესაბამისი პროქსი კლიენტი.

HTTPS ამატებს გვირაბს

ეს მაგალითი მოიცავს ჩვეულებრივ HTTP გადაცემას. ტიპური HTTPS კავშირი HTTP პროქსის გავლით ჯერ ითხოვს CONNECT example.com:443-ს, შემდეგ იწყებს TLS-ს დანიშნულებისკენ მიღებული გვირაბის შიგნით. მაგალითის URL-ის HTTPS-ად შეცვლა ამ ეტაპებს არ ამატებს.

HTTPS-ის ან შერეული დატვირთვისთვის გამოიყენეთ მხარდაჭერილი პროქსი აგენტი ან გამგზავნი საჭირო გვირაბის მხარდაჭერით. თავსებადი Node ვერსიებისთვის ერთი ვარიანტია Undici-ის fetch ProxyAgent-ით. შეინახეთ ეს პატარა ბირთვული კლიენტის მაგალითი იმ შემთხვევებისთვის, როცა ჩვეულებრივი HTTP გაცვლა თავად არის ის, რაც უნდა აკონტროლოთ ან გაიგოთ.

დაკავშირებული სტატიები