繁体   English   中英

Flask SocketIO-CORS问题

[英]Flask SocketIO - CORS issue

我正在尝试使用Flask-SocketIO向我的应用程序添加websocket功能。

我的应用程序架构严重分离,因此,我想使用一组不同的服务器来处理websocket内容。 但是,在测试中,我使用的是同一台服务器,只是端口不同。

当我尝试使用以下方法连接JavaScript时:

<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/socket.io/0.9.16/socket.io.min.js"></script>
<script type="text/javascript" charset="utf-8">
    var socket = io.connect("http://dev.example.com:8000");
    socket.on('connect', function() {
        socket.emit('my event', {data: 'I\'m connected!'});
    });
</script>

我得到错误:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://dev.example.com:8000/socket.io/1/?t=1442224745873. (Reason: CORS request failed).

因此,为了减轻这种情况,我做了一些CORS的工作,并添加了crossorigin定义的crossoriginhttp : crossorigin

我不会发布装饰器的代码,因为我没有从上面的网页上更改它。

然后在端点上,我使用了装饰器:

@app.route('/socket/')
@crossdomain(origin='http://dev.example.com:8000', headers='Content-Type')
def socket():
    return render_template('socket.html')

我也尝试过:

@app.route('/socket/')
@crossdomain(origin='*', headers='Content-Type')
def socket():
    return render_template('socket.html')

在加载/ socket /端点的HTTP响应标头中,我可以看到标头:

Access-Control-Allow-Headers:Content-Type
Access-Control-Allow-Methods:HEAD, OPTIONS, GET
Access-Control-Allow-Origin:http://dev.example.com:8000
Access-Control-Max-Age:21600
Content-Length:448
Content-Type:text/html; charset=utf-8
Date:Mon, 14 Sep 2015 10:20:09 GMT
Server:Werkzeug/0.10.4 Python/2.7.9

但是我仍然收到CORS错误。 任何人有任何想法吗? :)

原来我在localhost而不是0.0.0.0上运行服务器。 不知道为什么这给了我一个CORS错误,但它解决了问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM