ホームページ  >  記事  >  ウェブフロントエンド  >  nodejsはプロキシAjaxを設定します

nodejsはプロキシAjaxを設定します

WBOY
WBOYオリジナル
2023-05-18 12:23:08767ブラウズ

Node.js でプロキシ サーバーを使用すると、企業イントラネット内のパブリック ネットワーク リソースにアクセスできないなど、ネットワーク制限によりリソースにアクセスできない問題を解決できます。この記事では、Node.js でプロキシ サーバーを設定し、AJAX を使用して HTTP リクエストを送信する方法について説明します。

1. 環境変数を設定する

Node.js を使用して HTTP リクエストを送信する場合、環境変数を設定することでプロキシ サーバーを指定できます。環境変数を設定する方法は次のとおりです。

Windows:
コマンド ラインで次の指示を入力します:
set HTTP_PROXY=http://your-proxy:port
set HTTPS_PROXY=http: //your-proxy:port

Linux/Mac OS:
コマンド ラインで次のコマンドを入力します:
export HTTP_PROXY=http://your-proxy:port
export HTTPS_PROXY = http://your-proxy:port

ここで、http://your-proxy:port はプロキシ サーバーのアドレスとポート番号です。 ID を確認する必要がある場合は、ユーザー名とパスワードを追加できます (例:
http://username:password@your-proxy:port

2)。Node.js を使用して HTTP を送信します。 request

Node.js で http.request(options[, callback]) を使用して HTTP リクエストを送信します。ここで、options はリクエストのパラメータです。プロキシ サーバーを設定した後、プロキシ サーバーのアドレスとポート番号をパラメータとして options オブジェクトに渡すことができます。

以下は例です:

const http = require('http');

const proxy = {
  host: 'your-proxy',
  port: 8080
};

const options = {
  headers: {
    'User-Agent': 'Node.js'
  },
  host: 'www.example.com',
  port: 80,
  path: '/index.html',
  method: 'GET',
  agent: new http.Agent({ // 指定代理服务器
    proxy,
    keepAlive: true
  })
};

const req = http.request(options, (res) => {
  console.log(`STATUS: ${res.statusCode}`);
  console.log(`HEADERS: ${JSON.stringify(res.headers)}`);
  res.setEncoding('utf8');
  res.on('data', (chunk) => {
    console.log(`BODY: ${chunk}`);
  });
  res.on('end', () => {
    console.log('No more data in response.')
  });
});

req.on('error', (e) => {
  console.error(`problem with request: ${e.message}`);
});

req.end();

上記のコードでは、プロキシ サーバーのアドレスを your-proxy に設定し、ポート番号を 8080# に設定します。 ## 。同時に、アクセスしたいWebサイト、リクエストメソッド、パスなどの情報をoptionsで指定します。

agent オブジェクトは options でも指定されていることに注意してください。これは、管理に使用される http.Agent のインスタンスです。接続の再利用。 agent.proxy 属性を通じてプロキシ サーバーを指定し、keepAlive 属性を true に設定します。これは、長時間の接続を有効にし、HTTP リクエストのパフォーマンスを向上させることを意味します。

3. AJAX を使用して HTTP リクエストを送信する

通常、HTTP リクエストを送信するために

http.request を直接使用する必要はありませんが、サードパーティのリクエストを使用できます。それを実装するライブラリ。ブラウザでは通常、XMLHttpRequest オブジェクトを使用して AJAX リクエストを送信します。

Node.js では、

XMLHttpRequest の代替手段である xhr2 ライブラリを使用できます。これは、ブラウザーおよび Node.js 環境で AJAX リクエストをサポートします。以下は、xhr2 ライブラリを使用して HTTP リクエストを送信する例です。

const XMLHttpRequest = require('xhr2');

const xhr = new XMLHttpRequest();
xhr.open('GET', 'http://www.example.com/index.html');

xhr.onreadystatechange = function() {
  if (xhr.readyState === 4) {
    console.log(`STATUS: ${xhr.status}`);
    console.log(`HEADERS: ${JSON.stringify(xhr.getAllResponseHeaders())}`);
    console.log(`BODY: ${xhr.responseText}`);
  }
};

xhr.setProxy(`http://your-proxy:8080`); // 设置代理服务器

xhr.send();

上記のコードでは、まず

xhr2 ライブラリを参照し、 XMLHttpRequest オブジェクト。リクエスト メソッドと URL を設定した後、setProxy メソッドでプロキシ サーバーのアドレスを指定します。

xhr2 ライブラリを使用する利点は、その使用方法がブラウザの XMLHttpRequest API と非常に似ているため、フロントエンドとバックエンドのサポートが向上することです。 -endコードの再利用。

概要

Node.js でプロキシ サーバーを設定すると、ネットワークの制限の一部を解決できます。これを行うには、環境変数を設定するか、コード内でプロキシ サーバーを指定します。

同時に、AJAX を使用して HTTP リクエストを送信する場合、Node.js とブラウザーの両方と互換性のある

xhr2 ライブラリを使用して実装できます。

以上がnodejsはプロキシAjaxを設定しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。