http.request中如何让URL不转义特殊字符?
以下是官方文档中的示例代码,当请求参数area
为1|2|3
时,将自动转义为
http://hello.world/?area=1%7c2%7c3&type=1&key=4
请教如何能让其不转义?
const request = require('http').get;
const BASE_URL = ''http://hello.world/;
let area = '1|2|3', type = 1, key = 4;
request(`${BASE_URL}?area=${area}&type=${type}&key=${key}`, (res) => {
const { statusCode } = res;
let error;
if (statusCode !== 200) {
error = new Error(`Request Failed.\nStatus Code: ${statusCode}`);
}
if (error) {
console.error(error.message);
res.resume();
return;
}
res.setEncoding('utf8');
let rawData = '';
res.on('data', (chunk) => { rawData += chunk; });
res.on('end', () => {
try {
const parsedData = JSON.parse(rawData);
console.log(parsedData);
callback(error, parsedData);
} catch (e) {
console.error(e.message);
}
});
}).on('error', (e) => {
console.error(`Got error: ${e.message}`);
});
6 回复
不行就换第三方包吧,找找看有没有能满足你需求的
@imhered
request
,superagent
等包都试过了,都自动转。
转义是HTTP标准的一部分,为什么不在服务器端转回来。 你碰到的具体问题是什么,让你觉得“不转义”才是解决方法?
同意,转义是标准,为什么一定要不转移呢?遇到什么问题了
用http模块的 http.request(options[, callback])
encodeURIComponent / decodeURIComponent