Angularjs 烧瓶+;当从Ionic客户端请求时,返回404用于路由
我正在开发一个实时聊天和照片共享应用程序。我使用Flask作为服务器端来构建RESTful web服务,并使用Ionic framework(AngularJS)在移动设备上构建客户端Angularjs 烧瓶+;当从Ionic客户端请求时,返回404用于路由,angularjs,ionic-framework,ionic,flask-socketio,Angularjs,Ionic Framework,Ionic,Flask Socketio,我正在开发一个实时聊天和照片共享应用程序。我使用Flask作为服务器端来构建RESTful web服务,并使用Ionic framework(AngularJS)在移动设备上构建客户端 app.run(host='0.0.0.0', debug=True) 我有一个web服务端点[GET]/feeds/user\u id,它返回用户的新提要。当我使用以下代码行初始化我的应用程序时,我可以正确地从localhost和我在移动设备上运行的应用程序检索数据 app.run(host='0.0.0.0
app.run(host='0.0.0.0', debug=True)
我有一个web服务端点[GET]/feeds/user\u id,它返回用户的新提要。当我使用以下代码行初始化我的应用程序时,我可以正确地从localhost和我在移动设备上运行的应用程序检索数据
app.run(host='0.0.0.0', debug=True)
当我构建带有实时聊天功能的应用程序时,我使用Flask SocketIO,并按照官方文档中的规定,将我的应用程序的初始化方式更改为下面的方式
socketio.run(app, host='0.0.0.0', policy_server=False)
但是,我现在无法使用上述初始化方式从我的移动应用程序中检索数据。其中一个示例日志是:
192.168.1.100 - - [2015-09-13 23:38:32] "GET http://192.168.1.101:5000/feeds/1 HTTP/1.1" 404 342 0.002000
但是,我能够使用相同的链接从本地主机和同一网络中的另一台计算机检索数据,因此我确信服务器正在侦听所有公共IP。我还禁用了防火墙
下面是我的代码片段:
from app import socketio, app
if __name__ == '__main__':
socketio.run(app, host='0.0.0.0', policy_server=False)
# app.run(host='0.0.0.0', debug=True)
感谢您的帮助
更新:当我只使用app.run()时,日志如下:
192.168.1.110 - - [20/Sep/2015 00:17:23] "GET http://192.168.1.103:5000/feeds/1 HTTP/1.1" 200 -
正如Miguel提到的,这是一个奇怪的日志,但它可以工作,所以感谢Flask的健壮性
我还尝试在iOS上运行我的应用程序,效果非常好。现在我怀疑这是安卓平台上的爱奥尼亚框架的问题,或者只是我的设备上的问题。我的设备是Nexus7Gen1,运行Android 5.1.1 我自己解决了问题 Flask和Flask SocketIO不启动相同类型的服务器-Flask启动标准Werkzeug开发web服务器,但Flask SocketIO启动gevent web服务器。这就是为什么我看到了我在问题中提到的不同行为,但问题不在于烧瓶 真正的问题在于内置WebView如何处理到服务器端的HTTP请求。在我的设备中,WebView似乎以一种奇怪的方式处理请求——我没有详细研究这一点。因此,gevent web服务器无法处理此HTTP请求-导致404
我解决这个问题的方法是将最新Chrome版本的WebView打包到我的应用程序中。我用人行横道。它完美地解决了我的问题。您显示的日志片段很奇怪。对于普通请求,方案服务器和端口不应出现在日志中。我希望看到的是
“GET/feeds/1”
,而不是“GET”http://192.168.1.101:5000/feeds/1“
。您的工作客户端是否生成相同的日志?@Miguel我记得当我在浏览器中点击链接时,我总是得到“get/feeds/1”
。如果我点击应用程序中的链接,它总是显示服务器和端口,但它仅在我使用app.run()
时有效。我将在稍后运行代码时再次确认这一点。我认为您的代码一定发送了错误的URL,Flask无法正确解析。@Miguel是的,我认为您是正确的-我的更新如上。这看起来像是离子问题,而不是烧瓶问题。非常感谢你的帮助。