请求的 URL "[no URL]" 无效。节点 http-proxy



我相信我错过了在这里设置的代理的一个基本部分,但在使用以下内容时:

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文档中复制了代码,但您似乎误解了它。请注意,在最初的示例中,代理targetlocalhost:9000,这是它随后创建的同一服务器。因此,该示例的目的是访问localhost:8000,并将请求代理到localhost:9000。你想做的完全不同。您的代码正在创建两个完全独立的服务器,一个在8000端口上,另一个在9000端口上。

与其使用listen方法,您最好查看web方法的示例。

最新更新