Я создаю проект, в котором хочу использовать Socket.io. Теперь у меня ошибка в консоли браузера:
Доступ к XMLHttpRequest по адресу «https://back.escootrent.com/socket.io/?EIO=4&transport=polling&t=OwxDnkM» из источника «https://www.escootrent.com» заблокирован политикой CORS: Нет ' Заголовок Access-Control-Allow-Origin присутствует в запрошенном ресурсе.
Как видите я использую свои поддомены, с которыми все ломается. Знающие доменные ссылки с их каталогом.
Клиентский каталог — это базовое веб-приложение на html, css, js, php. А теперь для подключения к серверу используйте io('https://back.escootrent.com/socket.io');
Другой каталог — это сервер для Socket.io с этим кодом:
сервер.js
const express = require('express');
const https = require('https');
const fs = require('fs');
const app = express();
const options = {
key: fs.readFileSync('./_.escootrent.com_private_key.key'),
cert: fs.readFileSync('./escootrent.com_ssl_certificate.cer')
};
const server = https.createServer(options, app);
const io = require('socket.io')(server);
app.get('/chats', function(req, res) {
res.send('answ');
});
io.on('connection', socket => {
console.info('User connected', socket.id);
})
io.on('disconnect', () => {
console.info('User disconnected', socket.id);
});
server.listen(443, (err) => {
if (err) {
throw Error(err);
}
console.info('Server started!');
});
Все это основано на OpenServer и работает с локальными параметрами, но не работает с доменами.
Я попробовал это, и ничего не изменилось
app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', 'https://www.escootrent.com');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST');
res.setHeader('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
next();
});
io.origins((origin, callback) => {
if (origin === 'https://www.escootrent.com') {
callback(null, true);
} else {
callback('Origin not allowed', false);
}
});
const cors = require('cors');
app.use(cors());
@Yuvaraj Я использую 4.7.5
попробуйте изменить инициализацию



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


В моей ситуации решение заключается в использовании другого порта:
server.listen(1111, (err) => {
if (err) {
throw Error(err);
}
console.info('Server started!');
});
Дополнительно откройте этот порт в настройках вашего брандмауэра.
Это не имеет никакого смысла. Изменение порта не исправит несоответствие источника.
какую версию Socket.io вы используете? потому что
io.originsобесценивается