Socket.io Letsencrypt и сбой безопасного соединения на CORS - PullRequest
0 голосов
/ 27 апреля 2019

У меня есть простая node.js установка, работающая socket.io> 1.0.0;

fs = require('/home/node/bin/node_modules/file-system');

        // Options for socket.io > 1.0.0
        var options = {
                allowUpgrades: true,
                transports: [ 'polling', 'websocket' ],
                pingTimeout: 6000,
                pingInterval: 3000,
                cookie: 'nom-nom',
                httpCompression: true,
                key: fs.readFileSync('/etc/letsencrypt/live/example.com/privkey.pem'),
                cert: fs.readFileSync('/etc/letsencrypt/live/example.com/fullchain.pem'),
                origins: '*:*'
        };

        io = require('/home/node/bin/node_modules/socket.io')(8000, options);

Когда клиент подключается со страницы, обслуживаемой через http, он может подключиться, как ожидается, иРазъем подключения разрешен.Если клиент пытается подключиться со страницы, обслуживаемой через https, я получаю следующую ошибку:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://example.com:8000/socket.io/?EIO=3&transport=polling&t=MfVDWxD. (Reason: CORS request did not succeed).

Учитывая, что моя политика CORS уже установлена ​​для *:*, что должно разрешать все, что я не понимаю, почемуэто не удается.

Я попытался добавить {secure: true} к клиентскому соединению, и я также попытался принудительно ввести URL wss:// и https:// для строки подключения - все это приводит к одной и той же ошибке CORS.

Это реализация с чистым сокетом, без использования каких-либо фреймворков, таких как express или даже http.

Может ли кто-нибудь указать мне правильное направление, чтобы я мог разрешить своим клиентам подключаться через https или в идеале http и https.

1 Ответ

0 голосов
/ 27 апреля 2019

вам нужно установить cors, вы можете сделать это с помощью npm или любого другого менеджера пакетов

, затем в вашем приложении nodejs:

// require cors
const cors = require("cors");
// Use Cors As Middleware
app.use(cors());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...