Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript “请求的URL”;[无URL]”;,这是无效的。节点http代理_Javascript_Node.js_Proxy - Fatal编程技术网

Javascript “请求的URL”;[无URL]”;,这是无效的。节点http代理

Javascript “请求的URL”;[无URL]”;,这是无效的。节点http代理,javascript,node.js,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, { 'Conte

我认为我缺少此处设置的代理的基本部分,但在使用以下内容时:

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
头(可能它使用的是虚拟主机)。因此,它将不知道如何处理它,并返回该错误。代理正在成功代理来自远程服务器的错误消息

您显然是从
httpproxy
文档中复制了代码,但您似乎误解了它。请注意,在原始示例中,代理
目标
localhost:9000
,它与它随后创建的服务器相同。因此,该示例的目的是访问
localhost:8000
,并将请求代理到
localhost:9000
。你想要做的是完全不同的。您的代码正在创建两个完全独立的服务器,一个在端口8000上,另一个在端口9000上


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

您在何时何地看到此错误消息?事实上,我是个傻瓜。我正在访问localhost:8000。。。现在它工作了。如果你想为其他傻瓜添加答案,我会接受。我也很乐意删除这个问题,这取决于其他人是否能从中受益?我个人认为他们会,因为这会节省我几(15)分钟的时间,真的,很大的帮助。我错过了这整件事,然后跳过去完成它。感谢您指出这一点:web req、res、[options](用于代理常规HTTP(S)请求)ws req、socket、head、[options](用于代理ws(S)请求)listen port(为方便起见,将对象包装在web服务器中的函数)close[callback](关闭内部web服务器并停止在给定端口上侦听的函数)现在,我需要确定是否需要运行服务器,我需要一些逻辑来在加载之前向页面添加一些文件,因此我想象一个
listen
和一个
web
看起来,在
asos.com
上执行代理实际上非常困难,因为它大约有4个reidrects:O