📅  最后修改于: 2023-12-03 15:05:38.802000             🧑  作者: Mango
当我们使用 Node.js 发送 http 请求时,很容易遇到编码问题。如果请求路径中包含未转义的字符,会导致该错误。这通常是由 url 中包含特殊字符(如中文字符或空格)或非英文数字造成的。
const http = require('http');
const options = {
hostname: 'www.example.com',
port: 80,
path: '/search?keyword=未转义的字符',
};
const req = http.request(options, (res) => {
console.log(`statusCode: ${res.statusCode}`);
res.on('data', (d) => {
process.stdout.write(d);
});
});
req.on('error', (error) => {
console.error(error);
});
req.end();
此时会抛出以下错误:
TypeError [ERR_UNESCAPED_CHARACTERS]: Request path contains unescaped characters
为了解决这个问题,我们可以使用 encodeURI()
或 encodeURIComponent()
函数对 url 进行编码。这些函数可以将 url 中的特殊字符转换为 URL 安全字符,从而避免该错误。
const http = require('http');
const options = {
hostname: 'www.example.com',
port: 80,
path: `/search?keyword=${encodeURIComponent('未转义的字符')}`,
};
const req = http.request(options, (res) => {
console.log(`statusCode: ${res.statusCode}`);
res.on('data', (d) => {
process.stdout.write(d);
});
});
req.on('error', (error) => {
console.error(error);
});
req.end();
在这里,我们使用 encodeURIComponent()
函数对特殊字符进行编码,以避免这个错误。
当我们使用 Node.js 发送 http 请求时,需要注意请求路径中是否包含特殊字符。如果包含特殊字符,需要使用 encodeURI()
或 encodeURIComponent()
函数对其进行编码,避免 TypeError [ERR_UNESCAPED_CHARACTERS]
错误的出现。