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 是原因。