在Flask socketio应用上连接时出错

时间:2018-06-27 07:19:32

标签: javascript python heroku flask socket.io

我在Heroku上托管了Flask socket.io应用(后端)。

我的JS代码前端可以连接到本地计算机上的主机。 尝试连接到服务器时出现以下错误。

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://deploy-appp.herokuapp.com/socket.io/?

EIO=3&transport=polling&t=MH05dP-. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://deploy-appp.herokuapp.com/socket.io/?

EIO=3&transport=polling&t=MH05f5A. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).

Link to the backend application

用于套接字连接的JS代码:

<script type="text/javascript">
var socket = io.connect('https://deploy-appp.herokuapp.com/');
socket.on('connect', function() {
console.log('connected');
});
socket.on('message', function(msg) {
document.getElementById('messages').append('<li>'+msg+'</li>');
console.log('Received message');
});
function send() {

console.log(document.getElementById('myMessage').value)
socket.send(document.getElementById('myMessage').value)

};
</script>

1 个答案:

答案 0 :(得分:0)

签出cors wiki。通常,如果您的前端应用程序正在从另一个uri“运行”到后端,则会出现这样的错误。举例来说,您的客户端代码的宿主是myclient.com,但是您的socket.io后端在anotherclient.com上运行。

有很多解决方案,您可以显式设置起点,请参见此答案Socket.io + Node.js Cross-Origin Request Blocked。 (如果您是在本地运行Web应用程序,这是最快的方法,但是长期使用则不安全)

或者,在客户端Web服务器和socketio应用程序前面有一个反向代理,该代理会将客户端/ socketio调用路由到您的socketio服务器,并将另一个请求路由到托管您的站点的服务器。