【发布时间】:2015-05-25 03:01:06
【问题描述】:
我一直在尝试通过套接字 io 从烧瓶发送数据。我需要从不同的来源访问这些数据,但它给出了 CORS 错误。我尝试过使用各种跨来源的东西,但都没有奏效。有人可以帮忙吗?
应该调用think socket io的视图:
from flask.ext.cors import cross_origin
@socketio.on('increment',namespace="/api")
@cross_origin()
def increment(message):
number += 1;
emit('number',{'data':number},broadcast=True)
运行服务器:
app = Flask(__name__)
cors = CORS(app,resources={r"/api/*":{"origins":"*"}})
socketio = SocketIO(app)
app.debug = True
app.host = '0.0.0.0'
socketio.run(app)
【问题讨论】:
-
socket.io 事件不是正常的 Flask 路由,你不能使用像 Flask-CORS 中的
cross_origin这样的常规路由装饰器。我认为您需要进一步调查这个问题,CORS 支持已经在 Flask-SocketIO 使用的gevent-socketio中实现。也许看看浏览器调试器中的请求,看看错误发生在哪里。我刚刚用 Flask-SocketIO 示例应用程序测试了跨域,它无需做任何不同的事情就可以工作。
标签: python flask socket.io cors