javascript - 请求的 URL "[no URL]"无效。 Node http-proxy

标签 javascript node.js 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);

如果没有这个设置,远程服务器将接收到带有 header Host: localhost:8000 的请求,看起来这个特定的服务器关心 Host header (也许它正在使用虚拟主机)。结果它不知道如何处理它并返回该错误。代理成功代理了来自远程服务器的错误消息。

您已经清楚地从 http-proxy 文档中复制了您的代码,但您似乎误解了它。请注意,在原始示例中,代理 targetlocalhost:9000,这与它随后创建的服务器相同。所以该示例的目的是您将访问 localhost:8000 并将请求代理到 localhost:9000。你试图做的是完全不同的。您的代码正在创建两个完全独立的服务器,一个在端口 8000 上,另一个在端口 9000 上。

与其使用 listen 方法,不如查看 web 方法的示例。

关于javascript - 请求的 URL "[no URL]"无效。 Node http-proxy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46889139/

相关文章:

javascript - 单击一次“阅读更多”按钮将不起作用,但多次单击将不起作用

Javascript Ascii 编码

javascript - 客户端 JavaScript 中的 HMAC 和身份欺骗

javascript - 如何从 Firebase 数据库中获取值并将其分配给 Firebase Cloud Functions 中的值?

ruby-on-rails - 通过代理运行 Web 请求时如何设置 use_ssl 参数?

javascript - 使用 Chart.js 选项的 Rails 应用程序

node.js - typescript 找不到模块 'worker_threads'

node.js - 通过 Restify 从 Node.js 发送到客户端时 XLSX 文件损坏

apache - Apache(也许是 Tomcat)如何重定向到特定文件

angular - 如何使用我的 http 请求配置代理?