【发布时间】:2014-05-18 20:46:42
【问题描述】:
我遇到了以下问题:我正在使用 socket.io (netty socket.io - https://github.com/mrniko/netty-socketio) 运行 JAVA 服务器 - 我正在尝试通过 javascript 从不同的 Web 服务器访问该服务器。
为了测试,我正在尝试运行演示聊天 (https://github.com/mrniko/netty-socketio-demo)。
现在的问题是我不断收到以下信息
XMLHttpRequest cannot load http://myserver/socket.io/1/?t=1400445162388. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'myclient.com' is therefore not allowed access.
所以最大的问题是:我如何允许访问我的 java 服务器?我找到了一些解决方案,说要在其中添加“标题”,但我不知道该放在哪里。这会进入 socket.io 服务器代码吗?
我想我需要这样的东西,放在 JAVA 服务器上的某个地方:
response.setHeader("Access-Control-Allow-Origin", "*");
这是启动服务器的代码:
Configuration config = new Configuration();
config.setHostname("localhost");
config.setPort(80);
final SocketIOServer server = new SocketIOServer(config);
//ChatObject wurde extra implementiert, ggf. loeschen
server.addJsonObjectListener(ChatObject.class, new DataListener<ChatObject>() {
@Override
public void onData(SocketIOClient client, ChatObject data, AckRequest ackRequest) throws Exception {
// broadcast messages to all clients
server.getBroadcastOperations().sendJsonObject(data);
}
});
server.start();
这是我从服务器得到的输出:
error: The specified resource was not found: /static/flashsocket/WebSocketMain.swf
error: The specified resource was not found: /static/flashsocket/WebSocketMainInsecure.swf
info: Session store / pubsub factory used: {}MemoryStoreFactory (local session store only)
info: SocketIO server started at port: {}80
非常感谢任何帮助!谢谢
【问题讨论】:
-
否;您需要配置 Socket.io 以允许您的来源。
-
谢谢@SLaks 你能给我一个关于如何以及在哪里做的方向吗?
-
谢谢,我已经找到那个页面了。如果我做对了,它说默认情况下设置了“*”,允许从任何地方访问,对吗?另外,这是一个 java 服务器,所以我不能使用 java 脚本代码,对吧?还是我必须在我的客户端 java 上添加它?
-
我的意思是客户端java脚本
标签: java javascript sockets socket.io