烧瓶ERR_CONNECTION_CLOSED

时间:2019-11-13 22:50:09

标签: python node.js web flask

我正在尝试从iPad访问本地Web服务器(Flask)。 我的设置:iPad通过以太网连接到Macbook(服务器)。 当我尝试使用Node.js(快速)网络服务器(如下所示)时,它可以工作,我可以访问http://172.x.x.x:5000/并获取响应。但是,当我使用简单的Flask服务器尝试相同操作时,却无法访问它,我在iPad(Chrome浏览器)上收到错误ERR_CONNECTION_CLOSED

可以运行的简单Node.js服务器:

const express = require('express');
var app = express();
var PORT = 5000;

app.get('/', (req, res) => {
    res.send(JSON.stringify({ value: 1 }));
})

app.listen(PORT);

可在本地运行但不能在iPad上运行的Flask(Python)服务器:

from flask import Flask

app = Flask(__name__)


@app.route('/')
def hello_world():
    return 'Hello World!'


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=False)

详细信息:如果我将ssl_context添加到flask(app.run(ssl_context='adhoc'),则可以在iPad上运行,但是我没有凭据,并且收到不安全网页的错误,因此对REST API的请求无效。

obs:我无法在生产中运行node.js。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

因此,如果将来任何人遇到此错误,我都找不到解决方法。但是,我找到了一个简单的解决方法:拥有一个从Flask到iPad的Node.js代理脚本代理信息:

var http = require('http'),
    httpProxy = require('http-proxy');
var proxy = httpProxy.createProxyServer({});

try {
    var server = http.createServer(function (req, res) {
        try {
            proxy.web(req, res, { target: 'http://10.0.60.108:10800' });
        }
        catch (error) {
            console.log(`[PROXY]-> ERROR!`);
        }
    });


    server.listen(5001);
    console.log("[PROXY]-> PORT:5001")
} catch (error) {
    //handle errors here
    console.log('[PROXY]:error')
}