【发布时间】:2013-10-15 21:47:13
【问题描述】:
我在尝试连接我的 Angular 应用程序时收到以下错误消息,使用 Grunt 服务器运行,使用 socketIO Flask 应用程序:
XMLHttpRequest cannot load http://localhost:8080/socket.io/1/?t=1381872821951.
Origin http://localhost:9000 is not allowed by Access-Control-Allow-Origin.
我已经对这个问题进行了一些研究,我知道这是因为客户端 (angularjs) 正在向另一个服务器发出请求,而响应来自该服务器。
两台服务器中的哪一台有问题?
1) Grunt 服务器?我已经试过了:https://stackoverflow.com/a/17256255/1819058 如果它来自 Grunt 服务器,哪个应该可以解决问题
2) Flask SocketIO 服务器:
app = Flask(__name__)
@app.route("/socket.io/<path:path>")
def run_socketio(path):
socketio_manage(request.environ, {'': ChatNamespace})
if __name__ == '__main__':
print 'Listening on http://localhost:8080'
app.debug = True
import os
from werkzeug.wsgi import SharedDataMiddleware
app = SharedDataMiddleware(app, {
'/': os.path.join(os.path.dirname(__file__), 'static')
})
from socketio.server import SocketIOServer
SocketIOServer(('', 8080), app,
namespace="socket.io", policy_server=False).serve_forever()
这是我连接到服务器的方式:
var socket = ioSocket || io.connect('http://localhost:8080');
有人可以帮我解决这个问题吗?如果您使用 websockets,请求转到另一台服务器不是逻辑吗?
另一个奇怪的注意事项:整个事情都有效,但在重新启动后停止工作......
【问题讨论】:
标签: angularjs websocket socket.io flask gruntjs