http.request中如何让URL不转义特殊字符?
发布于 7 年前 作者 qtisan 8140 次浏览 来自 问答

以下是官方文档中的示例代码,当请求参数area1|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

回到顶部