Σε ένα συνηθισμένο αίτημα HTTP μέσω προωθητικού διακομιστή μεσολάβησης, το Node συνδέεται με τον διακομιστή και στέλνει το URL προορισμού στη γραμμή αιτήματος. Τρεις τιμές περιγράφουν αυτό το ένα αίτημα:

ΤιμήΠαράδειγμα
Τελικό σημείο σύνδεσης TCPproxy.example:8080
Στόχος αιτήματοςhttp://example.com/news?q=proxy
Κεφαλίδα Hostexample.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 είναι ο μεσολαβητής, οπότε ορίστε την κεφαλίδα σκόπιμα αντί να βασίζεστε σε αυτή τη διεύθυνση σύνδεσης.

Αν απαιτείται έλεγχος ταυτότητας, τα διαπιστευτήρια του διακομιστή ανήκουν στο άλμα του. Η επιλογή αιτήματος auth του Node δημιουργεί κεφαλίδα Authorization για τον πόρο· δεν είναι γενική επιλογή σύνδεσης μέσω διακομιστή. Χρησιμοποιήστε το σχήμα που απαιτεί ο διακομιστής και κατάλληλο πελάτη όταν η ανταλλαγή είναι πιο σύνθετη.

Το HTTPS προσθέτει τούνελ

Αυτό το παράδειγμα καλύπτει απλή προώθηση HTTP. Μια τυπική σύνδεση HTTPS μέσω διακομιστή μεσολάβησης HTTP ζητά πρώτα CONNECT example.com:443 και μετά ξεκινά TLS προς τον προορισμό μέσα στο αποδεκτό τούνελ. Η αλλαγή του URL σε HTTPS δεν προσθέτει αυτά τα στάδια.

Για HTTPS ή μικτό φόρτο εργασίας, χρησιμοποιήστε συντηρούμενο πράκτορα ή αποστολέα με την απαιτούμενη υποστήριξη τούνελ. Για συμβατές εκδόσεις Node, μια επιλογή είναι το fetch του Undici με ProxyAgent. Κρατήστε αυτό το μικρό παράδειγμα βασικού πελάτη για περιπτώσεις όπου η απλή ανταλλαγή HTTP είναι αυτό που χρειάζεται να ελέγξετε ή να κατανοήσετε.

Σχετικά άρθρα