Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Tidak ada cara standar untuk mengaktifkan proksi untuk aplikasi Node.js. Apakah Anda dapat menggunakan proksi, tergantung pada pustaka yang Anda gunakan untuk membuat permintaan HTTP. Biasanya, Anda perlu memperbarui kode untuk mengonfigurasi proksi. Namun, Anda dapat menggunakan global-agent
paket untuk mengaktifkan dukungan proksi untuk aplikasi Node.js Anda dengan perubahan kode minimal.
API pengambilan Node.js asli
Di v17.5.0, Node.js memperkenalkan dukungan eksperimental untuk fetch
API. Sayangnya, API ini masih terbatas dan tidak mendukung konfigurasi proksi. Jika Anda ingin menggunakan Dev Proxy dengan Node.js, Anda perlu menggunakan pustaka yang berbeda untuk membuat permintaan HTTP.
global-agent
global-agent
adalah pustaka populer yang menyediakan agen HTTP/HTTPS global untuk Node.js. Ini memungkinkan Anda menentukan proksi menggunakan variabel lingkungan. Manfaat penggunaannya global-agent
adalah Anda tidak perlu mengubah cara Anda mengeluarkan permintaan HTTP di aplikasi Anda untuk menggunakan Dev Proxy.
Berikut adalah contoh bagaimana Anda dapat menggunakan global-agent
dalam aplikasi Node.js yang menggunakan node-fetch
:
import fetch from 'node-fetch';
import { bootstrap } from 'global-agent';
bootstrap();
(async () => {
const result = await fetch('https://jsonplaceholder.typicode.com/posts');
const jsonResult = await result.json();
console.log(JSON.stringify(jsonResult, null, 2));
})();
Berikut adalah cara anda dapat menggunakan global-agent
dengan Node.js dan modul standar https
:
const https = require('https');
const globalAgent = require('global-agent');
globalAgent.bootstrap();
https.get('https://jsonplaceholder.typicode.com/posts', (resp) => {
let data = '';
resp.on('data', (d) => {
data += d;
});
resp.on('end', () => {
console.log(JSON.parse(data));
});
resp.on('error', (err) => {
console.error(err);
});
});
Saat memulai aplikasi Anda, tentukan proksi menggunakan GLOBAL_AGENT_HTTP_PROXY
variabel lingkungan dan abaikan kesalahan sertifikat.
NODE_TLS_REJECT_UNAUTHORIZED=0 GLOBAL_AGENT_HTTP_PROXY=http://127.0.0.1:8000 node global-node-fetch.mjs
node-fetch
node-fetch adalah pustaka populer yang menyediakan fetch
implementasi untuk Node.js.
node-fetch
tidak mendukung menentukan proksi menggunakan variabel lingkungan. Sebagai gantinya, Anda perlu membuat agen kustom dan meneruskannya ke metode fetch
.
Berikut adalah contoh bagaimana Anda dapat menggunakan node-fetch
dengan Dev Proxy dengan menentukan agen menggunakan https-proxy-agent
paket.
const fetch = require('node-fetch');
const { HttpsProxyAgent } = require('https-proxy-agent');
(async () => {
// Create a custom agent pointing to Dev Proxy
const agent = new HttpsProxyAgent('http://127.0.0.1:8000');
// Pass the agent to the fetch method
const result = await fetch('https://jsonplaceholder.typicode.com/posts', { agent });
const jsonResult = await result.json();
console.log(JSON.stringify(jsonResult, null, 2));
})();
Axios
Axios adalah pustaka populer lainnya untuk membuat permintaan HTTP di Node.js. Axios memungkinkan Anda menentukan proksi menggunakan variabel lingkungan atau menentukan agen langsung dalam konfigurasi permintaan.
Menggunakan Axios dan Dev Proxy dengan variabel lingkungan
Saat Anda menggunakan Dev Proxy dengan Axios dan menentukan proksi menggunakan variabel lingkungan, Anda tidak perlu mengubah kode Anda. Yang perlu Anda lakukan adalah mengatur https_proxy
variabel lingkungan dan Axios menggunakannya untuk membuat permintaan.
import axios from 'axios';
(async () => {
const result = await axios.get('https://jsonplaceholder.typicode.com/posts');
const response = result.data;
console.log(JSON.stringify(response, null, 2));
})();
Tentukan https_proxy
variabel lingkungan baik secara global atau saat memulai aplikasi Anda.
https_proxy=http://127.0.0.1:8000 node axios.mjs
dapat
Mirip node-fetch
dengan , Got tidak mendukung menentukan proksi menggunakan variabel lingkungan. Sebagai gantinya, Anda perlu membuat agen kustom dan meneruskannya ke permintaan.
Berikut adalah contoh bagaimana Anda dapat menggunakan Got with Dev Proxy:
import got from 'got';
import { HttpsProxyAgent } from 'https-proxy-agent';
(async () => {
// Create a custom agent pointing to Dev Proxy
const agent = new HttpsProxyAgent('http://127.0.0.1:8000');
const result = await got('https://jsonplaceholder.typicode.com/posts', {
// Pass the agent to the fetch method
agent: {
https: agent
},
// Disable certificate validation
https: {
rejectUnauthorized: false
}
}).json();
console.log(JSON.stringify(result, null, 2));
})();
SuperAgent
SuperAgent
tidak mendukung menentukan proksi menggunakan variabel lingkungan. Untuk menggunakan Dev Proxy dengan SuperAgent, Anda perlu menginstal superagent-proxy
plugin dan mengonfigurasi proksi menggunakan proxy
metode .
const superagent = require('superagent');
require('superagent-proxy')(superagent);
(async () => {
const result = await superagent
.get('https://jsonplaceholder.typicode.com/posts')
.proxy('http://127.0.0.1:8000')
// Disable certificate validation
.disableTLSCerts();
console.log(JSON.stringify(result.body, null, 2));
})();
Masalah umum
Saat Anda menggunakan Dev Proxy dengan Node.js, Anda mungkin mengalami masalah berikut.
UNABLE_TO_VERIFY_LEAF_SIGNATURE
kesalahan
Saat Anda menggunakan Dev Proxy dengan Node.js, Anda mendapatkan kesalahan yang mirip dengan:
/Users/user/my-app/node_modules/node-fetch/lib/index.js:1501
reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));
^
FetchError: request to https://jsonplaceholder.typicode.com/posts failed, reason: unable to verify the first certificate
at ClientRequest.<anonymous> (/Users/user/my-app/node_modules/node-fetch/lib/index.js:1501:11)
at ClientRequest.emit (node:events:518:28)
at TLSSocket.socketErrorListener (node:_http_client:495:9)
at TLSSocket.emit (node:events:518:28)
at emitErrorNT (node:internal/streams/destroy:169:8)
at emitErrorCloseNT (node:internal/streams/destroy:128:3)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
type: 'system',
errno: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE',
code: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE'
}
Untuk memperbaiki masalah ini, Anda perlu mengatur NODE_TLS_REJECT_UNAUTHORIZED
variabel lingkungan ke 0
. Anda dapat menentukannya secara global, atau langsung saat memulai aplikasi Anda.
NODE_TLS_REJECT_UNAUTHORIZED=0 node index.js