我有一个应用程序,我想用它作为代理。代码看起来像这样 我正在使用请求npm。
app.all('*', function(req, res){
console.log(req.url); //lower case
console.log(req.url.substr(0, 5));
var alteredRequest;
if (req.url.substr(0,5) == '/pro/') {
var requestedURL = req.url.substr(5);
console.log(requestedURL);
if( (requestedURL.substr(0, 7) != 'http://') || (requestedURL.substr(0, 8) != 'https://') ){
alteredRequest = "http://" + requestedURL;
}
request(alteredRequest, function(error, response, body){
console.log('error: ', error); // Print the error if one occurred
console.log('statusCode: ', response && response.statusCode); // Print the response status code if a response was received
res.send(response);
})
}
})
当我在结束时调用res.send(response)
时,我将响应作为正文,并且所有标题exc都被带到登录到屏幕的html主体。而不是那样,我想发送它作为一个真正的回应与所有标题和cookie。我该如何实现?谢谢你的帮助。
要进行更多演示,响应(来自google.com)就像这样开始,但它在屏幕上显示!不是真正的标题和statusCode:
{"statusCode":200,"body":"<!doctype html><html itemscope=\"\" itemtype=\"http://schema.org/WebPage\" lang=\"tr\"><head><meta content=\"text/html; charset=UTF-8\" http-equiv=\"Content-Type\"><meta content=\"/images/branding/googleg/1x/googleg_standard_color_128dp.png\" itemprop=\"image\"><title>Google</title><script nonce=\"fzz0lJtfXqp5SuC6mvodsw==\">(function(){window.google=
答案 0 :(得分:0)
if (req.url.substr(0,5) == '/pro/')
也许是找到我见过的路线最可怕的方式。这是app.get('/', ...)
的目的。但是要回答你的问题,这是一个有效的例子
const express = require("express");
const request = require("request");
const app = express();
app.all('*', (req, res) => {
const newUrl = 'http://www.google.com'; //replace with your url altering code
return request(newUrl)
.on('response', function(response) {
console.log(response.statusCode) // 200
console.log(response.headers['content-type'])
})
.on('error', function(err) {
console.log(err)
})
.pipe(res);
});
app.listen(9000);
&#13;