Seven Proxies
Description
Analysis
export const request = async (url, options) => {
const parsedUrl = new URL(url);
const client = new Socket();
client.setEncoding('utf8');
client.connect(parsedUrl.port || 80, parsedUrl.hostname, () => {
let request = '';
request += `${options.method} ${parsedUrl.pathname + parsedUrl.search} HTTP/1.0\r\n`;
request += `Host: ${parsedUrl.host}\r\n`;
for (const header in options.headers) {
if (header.includes('\r\n') || options.headers[header].includes('\r\n')) {
continue;
}
request += `${header}: ${options.headers[header]}\r\n`;
}
if (options.body) {
request += `Content-Type: text/plain\r\n`;
request += `Content-Length: ${options.body.length}\r\n`;
} else {
request += `Content-Length: 0\r\n`;
}
request += `Connection: close\r\n`;
request += `\r\n`;
if (options.body) {
request += options.body;
}
client.write(request);
});
let response = '';
client.on('data', (data) => {
response += data;
});
return new Promise((resolve, reject) => {
client.on('error', (e) => {
reject(e);
});
client.on('close', function () {
resolve(parseResponse(response));
});
});
};Solution
Note
Last updated