我正在尝试从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。
感谢您的帮助!
答案 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')
}