netty socket io CORS error: Access-Control-Allow-Origin
netty socket io CORS error: Access-Control-Allow-Origin
我有 wamp 服务器 运行 https、java 受 SSL 保护的 netty socket.io 服务器和 socket.io 客户端。
在客户端我有以下代码:
io.connect(url, {secure: true} );
url 是:https://127.0.0.1:8080
当我在浏览器中打开我的网络服务器时:https://127.0.0.1
我有以下错误:
socket.io-client:manager reconnect attempt error +1ms
socket.io.js (wiersz 1284)
socket.io-client:manager will wait 4000ms before reconnect attempt +1ms
socket.io.js (wiersz 1284)
engine.io-client:socket socket close with reason: "transport error" +3ms
socket.io.js (wiersz 3524)
engine.io-client:polling transport not open - deferring close +1ms
socket.io.js (wiersz 3524)
socket.io-client:manager attempting reconnect +4s
socket.io.js (wiersz 1284)
socket.io-client:manager readyState closed +3ms
socket.io.js (wiersz 1284)
socket.io-client:manager opening https://127.0.0.1:8080 +5ms
socket.io.js (wiersz 1284)
engine.io-client:socket creating transport "polling" +4s
socket.io.js (wiersz 3524)
engine.io-client:polling polling +5ms
socket.io.js (wiersz 3524)
engine.io-client:polling-xhr xhr poll +4ms
socket.io.js (wiersz 3524)
engine.io-client:polling-xhr xhr open GET: https://127.0.0.1:8080/socket.io/?EIO=3&transport=polling&t=1433329575886-4 +4ms
socket.io.js (wiersz 3524)
engine.io-client:polling-xhr xhr data null +6ms
socket.io.js (wiersz 3524)
GET https://127.0.0.1:8080/socket.io/? EIO=3&transport=polling&t=1433329575886-4
37ms
socket.io.js (wiersz 2739)
engine.io-client:socket setting transport polling +13ms
socket.io.js (wiersz 3524)
socket.io-client:manager connect attempt will timeout after 20000 +42ms
socket.io.js (wiersz 1284)
Zablokowano żądanie do zasobu innego pochodzenia: zasady „Same Origin Policy” nie pozwalają wczytywać zdalnych zasobów z „https://127.0.0.1:8080/socket.io/?EIO=3&transport=polling&t=1433329575886- 4”. (nieudane żądanie CORS)
engine.io-client:socket socket error {"type":"TransportError","description":0} +151ms
socket.io.js (wiersz 3524)
socket.io-client:manager connect_error +145ms
我不知道这个错误的原因...它是客户端、服务器上的错误还是 java脚本正在阻止某些东西?
我的错误是波兰语,但英语是这样的:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:8008/socket.io/1/?t=1399898337175. This can be fixed by moving the resource to the same domain or enabling CORS.
但是我的资源在同一个域中。
你知道如何解决这个问题吗?
我读到将 "Access-Control-Allow-Origin" 添加到 header 可以解决这个问题。如何将其添加到 netty java socket.io 实现中?
编辑:
我添加到 header: Access-Control-Allow-Origin: "*"
并且仍然出现错误
我遇到了与 NettySocketIO.Solution 相同的问题,就是更改 NettySocketio 服务器配置。问题是您的 NettySocketIO 服务器和您的网络服务器(您托管 html 网页的地方)在不同的域中,您需要将网络服务器 URL 添加到您的 NettySocketIO 服务器。
这是我的代码
Configuration _config = new Configuration();
SocketIOServer _server;
public void InitServer(){
_config.setHostname("MYNettyWebSocketSever");
_config.setPort(9092);
_config.setOrigin("http://WebServerHost:WebServerPort"); // or http://domain.com
_server = new SocketIOServer(_config);
_server.addEventListener("chatevent", ComPacket.class, (socketIOClient, comPacket, ackRequest) -> _server.getBroadcastOperations().sendEvent("chatevent", comPacket));
}
public void StartServer(){
_server.start();
}
请注意,您需要托管 HTML 页面,仅通过双击打开 HTML 页面是行不通的。
如果您没有得到任何东西,请发表评论。
我有自签名 SSL 证书,我的浏览器阻止了以下请求:
https://127.0.0.1:8080/socket.io/?EIO=3&transport=polling&t=1433329575886-4
所以我在浏览器中输入:https://127.0.0.1:8080/socket.io/?EIO=3&transport=polling&t=1433329575886-4
我接受了自签名证书,并且有效。
在普通的 SSL 证书上一切都开箱即用。
我也有类似的东西 _config.setOrigin("http://WebServerHost:WebServerPort");
所以浏览器阻止 SSL 是原因。
我有 wamp 服务器 运行 https、java 受 SSL 保护的 netty socket.io 服务器和 socket.io 客户端。
在客户端我有以下代码:
io.connect(url, {secure: true} );
url 是:https://127.0.0.1:8080
当我在浏览器中打开我的网络服务器时:https://127.0.0.1 我有以下错误:
socket.io-client:manager reconnect attempt error +1ms
socket.io.js (wiersz 1284)
socket.io-client:manager will wait 4000ms before reconnect attempt +1ms
socket.io.js (wiersz 1284)
engine.io-client:socket socket close with reason: "transport error" +3ms
socket.io.js (wiersz 3524)
engine.io-client:polling transport not open - deferring close +1ms
socket.io.js (wiersz 3524)
socket.io-client:manager attempting reconnect +4s
socket.io.js (wiersz 1284)
socket.io-client:manager readyState closed +3ms
socket.io.js (wiersz 1284)
socket.io-client:manager opening https://127.0.0.1:8080 +5ms
socket.io.js (wiersz 1284)
engine.io-client:socket creating transport "polling" +4s
socket.io.js (wiersz 3524)
engine.io-client:polling polling +5ms
socket.io.js (wiersz 3524)
engine.io-client:polling-xhr xhr poll +4ms
socket.io.js (wiersz 3524)
engine.io-client:polling-xhr xhr open GET: https://127.0.0.1:8080/socket.io/?EIO=3&transport=polling&t=1433329575886-4 +4ms
socket.io.js (wiersz 3524)
engine.io-client:polling-xhr xhr data null +6ms
socket.io.js (wiersz 3524)
GET https://127.0.0.1:8080/socket.io/? EIO=3&transport=polling&t=1433329575886-4
37ms
socket.io.js (wiersz 2739)
engine.io-client:socket setting transport polling +13ms
socket.io.js (wiersz 3524)
socket.io-client:manager connect attempt will timeout after 20000 +42ms
socket.io.js (wiersz 1284)
Zablokowano żądanie do zasobu innego pochodzenia: zasady „Same Origin Policy” nie pozwalają wczytywać zdalnych zasobów z „https://127.0.0.1:8080/socket.io/?EIO=3&transport=polling&t=1433329575886- 4”. (nieudane żądanie CORS)
engine.io-client:socket socket error {"type":"TransportError","description":0} +151ms
socket.io.js (wiersz 3524)
socket.io-client:manager connect_error +145ms
我不知道这个错误的原因...它是客户端、服务器上的错误还是 java脚本正在阻止某些东西?
我的错误是波兰语,但英语是这样的:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:8008/socket.io/1/?t=1399898337175. This can be fixed by moving the resource to the same domain or enabling CORS.
但是我的资源在同一个域中。
你知道如何解决这个问题吗? 我读到将 "Access-Control-Allow-Origin" 添加到 header 可以解决这个问题。如何将其添加到 netty java socket.io 实现中?
编辑:
我添加到 header: Access-Control-Allow-Origin: "*" 并且仍然出现错误
我遇到了与 NettySocketIO.Solution 相同的问题,就是更改 NettySocketio 服务器配置。问题是您的 NettySocketIO 服务器和您的网络服务器(您托管 html 网页的地方)在不同的域中,您需要将网络服务器 URL 添加到您的 NettySocketIO 服务器。
这是我的代码
Configuration _config = new Configuration();
SocketIOServer _server;
public void InitServer(){
_config.setHostname("MYNettyWebSocketSever");
_config.setPort(9092);
_config.setOrigin("http://WebServerHost:WebServerPort"); // or http://domain.com
_server = new SocketIOServer(_config);
_server.addEventListener("chatevent", ComPacket.class, (socketIOClient, comPacket, ackRequest) -> _server.getBroadcastOperations().sendEvent("chatevent", comPacket));
}
public void StartServer(){
_server.start();
}
请注意,您需要托管 HTML 页面,仅通过双击打开 HTML 页面是行不通的。
如果您没有得到任何东西,请发表评论。
我有自签名 SSL 证书,我的浏览器阻止了以下请求: https://127.0.0.1:8080/socket.io/?EIO=3&transport=polling&t=1433329575886-4
所以我在浏览器中输入:https://127.0.0.1:8080/socket.io/?EIO=3&transport=polling&t=1433329575886-4 我接受了自签名证书,并且有效。
在普通的 SSL 证书上一切都开箱即用。
我也有类似的东西 _config.setOrigin("http://WebServerHost:WebServerPort");
所以浏览器阻止 SSL 是原因。