Javascript ajax访问express中间件中的第三方服务器导致500错误

Javascript ajax访问express中间件中的第三方服务器导致500错误,javascript,ajax,node.js,html,express,Javascript,Ajax,Node.js,Html,Express,我需要从HTML5 web应用程序通过IP访问多个设备 我解决跨域的不可能在客户端完成这一切的方法是在express的中间件中“烹饪”来自客户端的请求。路由从客户端接收get或post,然后执行到由客户端有效负载标识的第三方设备的get或post 我正在使用代码从设备获取信息。当我直接从为测试目的而创建的客户端中的文件运行它时,它工作得很好。直接从文件运行避免了CORS的困难,因为我想客户机也是服务器 当我在快速路线中运行相同的代码时,我得到一个500错误 我是在尝试做一些不可能的事情吗?我只在

我需要从HTML5 web应用程序通过IP访问多个设备

我解决跨域的不可能在客户端完成这一切的方法是在express的中间件中“烹饪”来自客户端的请求。路由从客户端接收get或post,然后执行到由客户端有效负载标识的第三方设备的get或post

我正在使用代码从设备获取信息。当我直接从为测试目的而创建的客户端中的文件运行它时,它工作得很好。直接从文件运行避免了CORS的困难,因为我想客户机也是服务器

当我在快速路线中运行相同的代码时,我得到一个500错误

我是在尝试做一些不可能的事情吗?我只在node、express等网站上呆了大约一周,所以希望这是一个愚蠢而容易解决的问题。我认为我还没有找到任何其他类似的问题,这表明有一个合适的方法来实现我的需求

// post to find a camera
router.post('/find', function(req, res) {
    var url = 'http://' + req.body.addr + '/cgi-bin/aw_cam?cmd=QID&res=1';
    console.log(url);
    $.ajax({
        type: 'GET',
        url: url,
        dataType: 'html',
        success: function (result) {
        console.log('success: ' + result);
        res.send(result);
        },
        error: function (xhr, textStatus, err) {
            console.log('error: ' + textStatus);
        }
    });
});
以下是登录到服务器控制台的内容:

http://192.168.0.10/cgi-bin/aw_cam?cmd=QID&res=1
POST /cameras/find 500 126.593 ms - 1656

提前谢谢

好的,我找到了这个方法。诀窍是使用Node的内置http消息传递功能。我找到了一篇关于如何做到这一点的好文章

下面的代码完全符合我在自定义路由中间件中的要求。我想我刚刚了解到,在客户端,我只能按照我想要的方式使用AJAX

这使我能够将设备控制协议的更复杂细节抽象到服务器中,让我的客户端应用程序使用JSON/AJAX模型与它们交互。成功

var http = require('http');
// post to find a camera
router.post('/find', function(req, res) {
    var url = 'http://' + req.body.addr + '/cgi-bin/aw_cam?cmd=QID&res=1';
    console.log(url);

    http.get(url, (response) => {
        console.log(`Got response: ${response.statusCode}`);
        var body = '';
        response.on ('data', function(d) {
            body += d;
        });
        response.on ('end', function () {
            console.log('received: ' + body);
            var reply = {};
            if (body.indexOf('OID:') == 0) {
                reply.msg = body.slice(4);
                reply.ok = true;
            } else {
                reply.msg = body;
                reply.ok = false;
            }
            res.send(reply);
        });
        // consume response body
        response.resume();
    }).on('error', (e) => {
        console.log(`Got error: ${e.message}`);
    });
});