代理服务器

5 篇文章 0 订阅
2 篇文章 0 订阅

// 通用的GET代理服务器
router.get("/api/proxy", (req, res)=>{
	// 
	// 拼接完整请求地址
	let url = ""
	for (var k in req.query){
		
		if (k!="url"){
			let v = req.query[k]
			url += `&${k}=${v}`
		}else{
			url += req.query[k]
		}
	}
	console.log(url)
	// 1.编码字符串
	url = encodeURI(url)
	console.log(url)
	// 2.服务器端使用http向第三方接口发起请求 拿回数据
	http.get(url, function(response){
		
		let data = Buffer.alloc(0)
		
		response.on("data", function(d){
			data += d
		})
		response.on("end", function(){
			// 将拿到的数据返回给客户端
			res.json({
				code:200,
				msg:"ok",
				data:JSON.parse(data)
			})
		})
	})
})


// 支持post请求的代理服务器
router.post("/api/proxy", (req, res)=>{
	
	// url  params
	let reqUrl = req.body.url
	
	let params = req.body

	let urlObj = url.parse(reqUrl)
	// 使用http模块,发起post请求
	const postData = JSON.stringify(params)
	
	console.log(postData)
	
	const options = {
		hostname: urlObj.hostname,
		path:urlObj.path,
		method:"POST",
		headers: {
			'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
		}
	}

	const request = http.request(options, (response) => {
	
	  let data = Buffer.alloc(0)
	  
	  response.on('data', (chunk) => {
		
		data += chunk
	  });
	  response.on('end', () => {
		  
		res.json({
			code:200,
			msg:"ok",
			data:data
		})
	  });
	});

	// 将数据写入请求主体。
	request.write(postData);
	request.end();
})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值