我相信我错过了在这里设置的代理的一个基本部分,但在使用以下内容时:
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
现在我很确定这是一个输入代理的url?
我只想设置一个站点的代理,然后插入一些自定义的js文件。但这是第一步。
与您在评论中所说的相反,您尝试访问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
方法的示例。