[英]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
定义的crossorigin
: http : 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.