我相信我缺少这里设置的代理的基本部分,但是在使用以下内容时:
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);
如果没有这个设置,远程服务器将接收到带有 header Host: localhost:8000
的请求,看起来这个特定的服务器关心 Host
header (也许它正在使用虚拟主机)。结果它不知道如何处理它并返回该错误。代理成功代理了来自远程服务器的错误消息。
您已经清楚地从 http-proxy
文档中复制了您的代码,但您似乎误解了它。请注意,在原始示例中,代理 target
是 localhost:9000
,这与它随后创建的服务器相同。所以该示例的目的是您将访问 localhost:8000
并将请求代理到 localhost:9000
。你试图做的是完全不同的。您的代码正在创建两个完全独立的服务器,一个在端口 8000 上,另一个在端口 9000 上。
与其使用 listen
方法,不如查看 web
方法的示例。
关于javascript - 请求的 URL "[no URL]"无效。 Node http-proxy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46889139/