បន្ទាត់ស្នើសុំដែលនាំ HTTP របស់ Node ឆ្លងកាត់ប្រូកស៊ី
បង្កើតសំណើ HTTP ប្រូកស៊ីធម្មតាជាមួយឧបករណ៍ភ្ញៀវស្នូលរបស់ Node ដោយបំបែកចំណុចចុងក្រោយនៃការតភ្ជាប់ គោលដៅដាច់ខាត និងបឋមកថា Host។
ក្នុងសំណើ 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 គឺជាអ្នកកណ្តាល ដូច្នេះកំណត់បឋមកថាដោយចេតនា ជំនួសឱ្យការពឹងផ្អែកលើអាសយដ្ឋានតភ្ជាប់នោះ។
ប្រសិនបើត្រូវការផ្ទៀងផ្ទាត់ ព័ត៌មានសម្គាល់របស់ប្រូកស៊ីជារបស់ជំហានរបស់វា។ ជម្រើសសំណើ auth របស់ Node បង្កើតបឋមកថា Authorization សម្រាប់ធនធាន; វាមិនមែនជាជម្រើសចូលប្រូកស៊ីទូទៅទេ។ ប្រើគ្រោងការណ៍ដែលប្រូកស៊ីត្រូវការ និងឧបករណ៍ភ្ញៀវប្រូកស៊ីសមស្រប នៅពេលការផ្លាស់ប្តូរស្មុគស្មាញជាងនេះ។
HTTPS បន្ថែមរូងក្រោមដី
ឧទាហរណ៍នេះគ្របដណ្តប់ការបញ្ជូន HTTP ធម្មតា។ ការតភ្ជាប់ HTTPS ឆ្លងកាត់ប្រូកស៊ី HTTP ធម្មតាស្នើ CONNECT example.com:443 ជាមុន បន្ទាប់មកចាប់ផ្តើម TLS ទៅគោលដៅក្នុងរូងដែលទទួលយក។ ការប្តូរ URL ឧទាហរណ៍ទៅ HTTPS មិនបន្ថែមដំណាក់កាលទាំងនោះទេ។
សម្រាប់ HTTPS ឬបន្ទុកការងារចម្រុះ ប្រើភ្នាក់ងារ ឬអ្នកបញ្ជូនប្រូកស៊ីដែលថែទាំជាមួយការគាំទ្ររូងចាំបាច់។ សម្រាប់កំណែ Node ដែលត្រូវគ្នា ជម្រើសមួយគឺ fetch របស់ Undici ជាមួយ ProxyAgent។ រក្សាឧទាហរណ៍ឧបករណ៍ភ្ញៀវស្នូលតូចនេះសម្រាប់ករណីដែលការផ្លាស់ប្តូរ HTTP ធម្មតាខ្លួនឯងជាអ្វីដែលអ្នកត្រូវគ្រប់គ្រង ឬយល់។