Yönlendirici bir proxy üzerinden yapılan sıradan bir HTTP isteğinde Node proxy'ye bağlanır ve hedef URL'yi istek satırında gönderir. Üç değer bu tek isteği tanımlar:

DeğerÖrnek
TCP bağlantı uç noktasıproxy.example:8080
İstek hedefihttp://example.com/news?q=proxy
Host başlığıexample.com

Bu Node 22 örneği ayrımı açık hale getirir:

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);

Uç nokta bir yer tutucudur; genel bir HTTP testi için HTTP proxy listesinden bir aday seçin ve yanıtını kontrol edin. Örnek, durumu yazdırdıktan sonra yanıtı boşaltır; bir uygulama bunun yerine gövdeyi tüketebilir. Sorgu, istek hedefinin parçası olarak kalır.

Tam URL neden oraya aittir

Bir kaynak sunucu normalde /news?q=proxy gibi bir hedef alır. Yönlendirici proxy'nin de hedefe ihtiyacı vardır, bu yüzden HTTP/1.1 hedefi mutlak biçimde tanımlar:

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

HTTP/1.1 kurallarına göre, mutlak biçimi alan bir proxy iletirken URI'nin yetkisini kullanır ve tutarsız alınan Host alanını değiştirir. Tutarlı bir hedef Host başlığı göndermek yine de giden isteği belirsizlikten kurtarır. Node'un bağlantı ana bilgisayar adı aracıdır, bu nedenle başlığı o bağlantı adresine güvenmek yerine bilinçli olarak ayarlayın.

Kimlik doğrulama gerekiyorsa, proxy'nin kimlik bilgileri kendi atlamasına aittir. Node'un auth istek seçeneği kaynak için bir Authorization başlığı oluşturur; genel bir proxy oturum açma seçeneği değildir. Değişim daha karmaşık olduğunda proxy'nin gerektirdiği şemayı ve uygun bir proxy istemcisini kullanın.

HTTPS bir tünel ekler

Bu örnek düz HTTP iletimini kapsar. Tipik bir HTTP proxy üzerinden HTTPS bağlantısı önce CONNECT example.com:443 ister, ardından kabul edilen tünelin içinde hedefe TLS başlatır. Örneğin URL'sini HTTPS'e değiştirmek bu aşamaları eklemez.

HTTPS veya karma bir iş yükü için gerekli tünel desteğine sahip bakımlı bir proxy aracısı veya dağıtıcısı kullanın. Uyumlu Node sürümleri için bir seçenek ProxyAgent ile Undici fetch'tir. Düz HTTP alışverişinin kendisi kontrol etmeniz veya anlamanız gereken şey olduğunda bu küçük çekirdek istemci örneğini koruyun.

İlgili makaleler