У меня есть простая 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
.