首页 > 解决方案 > MeteorJS HTTP POST 请求连接丢失 XMLHttpRequest

问题描述

我正在编写一个集成到已经用 Meteor 编写的网站的应用程序(我无法更改它,但我可以添加它)。我正在尝试将信息从 Meteor 应用程序发送到我的 Flask 服务器。

为此,我使用 MeteorJs 的 HTTP 模块。

代码:

HTTP.post('http://127.0.0.1:5000/path', {
    "content" : {"headers" : {"Content-Type": "application/json"}, "data": {time: getTime, data: getData()}}
}, 
(error, result) => {
    if(error){
        console.log(error);
        console.log({time: getTime(), data: getData()})
        }
    else {
        console.log(result);
        }
    }
)

getTime()并且getData()两者都在此功能之外独立工作,因此它们不应成为错误的根源。

当我查看 JS 控制台以了解事件何时被触发时,我收到以下消息: Error: Connection lost at XMLHttpRequest.xhr.onreadystateexchange以及应该发送到 Flask 服务器的内容。

当我查看 Flask 服务器时,我看到它正在接收状态码为 200 的发布请求,但似乎实际上没有收到任何数据。

python端的代码:

@app.route(r'path', methods=["POST"])
def get_data():
    print(request.data)
    print(request.args)
    return "Hello World"

打印语句显示为空,并显示在控制台b'[object Object]'ImmutableMultiDict([])

Meteor 应用程序和 Flask 应用程序都在不同的端口上。

我认为问题出在 MeteorJS 方面,因为我使用 curl linux 功能,当我从那里 ping 烧瓶服务器时它可以正常工作。

有没有办法解决这个错误?如果有怎么办?

标签: pythonresthttpmeteor

解决方案


嗨,“参数”应该是“数据”。您可以在docs中找到所有有效选项。请让我知道这对你有没有用。

HTTP.post('http://127.0.0.1:5000/path', {
        data : {time: getTime(), data: getData()}
    }, (error, result) => {
        if(error){
            console.log(error);
            console.log({time: getTime(), data: getData()})
        } else {
            console.log(result);
        }
    }
)

推荐阅读