Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.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 错误:协议:191.168.XXX.XXX:不支持_Javascript_Node.js - Fatal编程技术网

Javascript 错误:协议:191.168.XXX.XXX:不支持

Javascript 错误:协议:191.168.XXX.XXX:不支持,javascript,node.js,Javascript,Node.js,我有以下代码: http.get('191.168.XXX.XXX:219/query', function (res) { ... }); IP也指向另一台运行node.js的机器,并重定向到要下载的真实文件(res.headers.location的检查在这一行之后)。问题是,即使我可以使用任何浏览器访问此IP:port,node.js也会抛出一个异常: http.js:1840 throw new Error('Protocol:' + options.protocol

我有以下代码:

http.get('191.168.XXX.XXX:219/query', function (res) {
    ...
});
IP也指向另一台运行node.js的机器,并重定向到要下载的真实文件(res.headers.location的检查在这一行之后)。问题是,即使我可以使用任何浏览器访问此IP:port,node.js也会抛出一个异常:

http.js:1840
    throw new Error('Protocol:' + options.protocol + ' not supported.');
          ^
Error: Protocol 191.168.XXX.XXX: not supported.
    at Object.exports.request (http.js:1840:11)
    at Object.exports.get (http.js:1840:11)
    at get_link (/home/pi/app.js:XXX:XX)
    at init (/home/pi/app.js:XXX:XX)
    at Object.cb [as oncomplete] (fs.js:168.19)
所以http.get似乎不喜欢我的地址,因为我知道我需要打另一个电话

我试过:

file_url = {
hostname : 191.168.XXX.XXX,
port : 219,
path : 'query'
};
相反,我被解雇了

编辑:

因此,在尝试创建url并出错之后,我开始这样做:

var link = {
        protocol: 'http:',
        hostname: '191.168.XXX.XXX',
        port: 219,
        path: '/?query'
    };
http.get(link, function (res) {
    console.log(res.statusCode + ' ' + res.headers.location);
    ...
});
服务器端,代码为:

function web (req, res) {
    console.log('Request!');
    var page = url.parse(req.url).pathname,
        query = url.parse(req.url).query;
    console.log(query + ' asked for smil');
    if(page === '/' && smil[query]) {
        log('ACCEPT', 'Redirecting to ' + smil[query]);
        res.writeHead(302,
            {Location: smil[query]}
        );
        res.end();
    } else { //AUTRE
        console.log('Refusing connection');
        res.writeHead(404, {'Content-Type': 'text/html'});
        res.end();      
    }
}
如果我从浏览器中调用191.168.XXX.XXX,如果我有有效的参数,我将被重定向或正确拒绝。但是从我的客户端代码来看,我仍然在http.get callback之前得到了econnrefluse。

根据Node的说法,
get
方法就像
request
方法一样,它使用Node的解析URL。虽然
url.parse
可以处理无方案的url,但端口组件中的前导冒号(
:219
)会使
parse
认为您的url确实有一个方案(这里,初始的
192.168.XXX.XXX
),这显然是不受支持的方案


这里的解决方案是明确指定一个方案,例如,
http://192.168.XXX.XXX/query

您正在使用191作为第一个地址字节,但我强烈怀疑您的地址以192开头-以191开头的地址是公共地址,请参阅以获取专用网络保留的地址范围的概述


因此,现在您正在向internet上的某个随机机器发送请求。

在最后一个示例中,您指定服务器在端口219上运行,这对于Web服务器来说是一个非常不寻常的端口。您确定目标计算机上有一个Web服务器正在侦听该端口吗?请尝试
http.get('http://191.168.XXX.XXX:219/query,函数(res){
,因为http.js似乎希望您正确定义所请求的URL,即包括协议。node.js是否希望URL中包含协议?
http.get('http://191...
您是否打算使用本地网络地址192.168.x.x?@DrakaSAN您仍然使用191作为第一个地址字节,但我非常怀疑您的地址以192开头-以191开头的地址是公共地址。因此,现在您正在向internet上的某个随机机器发送请求。请检查并重试100%确保您使用的地址正确。