我相信我错过了此处代理设置的基本部分,但在使用以下内容时:
var http = require('http'),
httpProxy = require('http-proxy');
httpProxy.createProxyServer({target:'http://www.asos.com'}).listen(8000);
http.createServer(function (req, res) {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.write('request successfully proxied!' + '\n' + JSON.stringify(req.headers, true, 2));
res.end();
}).listen(9000);
由以下人员介绍:
Invalid URL
The requested URL "[no URL]", is invalid.
Reference #9.56731002.1508760714.1524ffde
现在我很确定这是一个输入代理的网址?
我想要做的就是为站点设置代理,然后插入一些自定义js文件。但这是第一步。
答案 0 :(得分:2)
与您在评论中所说的相反,您尝试访问localhost:8000
是正确的。这是您创建的代理的正确端口。
您需要添加以下内容:
changeOrigin: true
完整:
httpProxy.createProxyServer({
changeOrigin: true,
target: 'http://www.asos.com'
}).listen(8000);
如果没有该设置,远程服务器将收到带有标头Host: localhost:8000
的请求,并且该特定服务器似乎关心Host
标头(可能它使用虚拟主机)。结果它不知道如何处理它并且它返回了那个错误。代理成功代理来自远程服务器的错误消息。
您已经从http-proxy
文档中清楚地复制了代码,但您似乎误解了它。请注意,在原始示例中,代理target
是localhost:9000
,它与随后创建的服务器相同。因此,该示例的目的是您将访问localhost:8000
,并将请求代理到localhost:9000
。你尝试做的事情是完全不同的。您的代码创建了两个完全独立的服务器,一个在端口8000上,另一个在端口9000上。
与使用listen
方法相比,您可能最好不要查看web
方法的示例。