#node.js #vue.js #socket.io
#node.js #vue.js #socket.io
Вопрос:
У меня есть сайт, написанный на Laravel, и Vue.js , также используется nodejs. Когда я пытаюсь войти на сайт, используя протокол http, все в порядке, когда я пытаюсь войти в протокол https, половина сайта не загружается и в консоли я получаю сообщение об ошибке:
Access to XMLHttpRequest at 'https://example.com:8443/socket.io/?EIO=3amp;transport=pollingamp;t=NPIJFIo' from origin 'https://example.com' has been blocked by CORS policy: No 'Access- Control-Allow-Origin 'header is present on the requested resource.
Перенаправление на https настроено на самом nginx, но я не могу сделать это на nodejs. Также я не могу понять, как правильно добавить путь к сертификату ssl в мой app.js .
Мой app.js:
const app = require('express')(),
server = require('https').createServer(app),
Redis = require('redis'),
RedisClient = Redis.createClient(),
io = require('socket.io')(server),
cors = require('cors'),
axios = require('axios');
const myArgs = process.argv.slice(2);
const domain = myArgs[0];
const SECRET_KEY = 'cZN^ZH8)mu~9e,>6M>3qKV=Ar^fFF,7/';
axios.defaults.baseURL = 'https://example.com/api/bot/';
server.listen(8081);
app.use(cors({
origin: true,
credentials: true
}));
Что я делаю не так? Я был бы благодарен за помощь.
Ответ №1:
Это проблема CORS, и вам нужно добавить cors
опцию для сокета.сервер ввода-вывода.
Обратитесь к обработке CORS для Socket.io .
io = require('socket.io')(server, {
cors: {
origin: '*'
}
});
Комментарии:
1. измените способ записи, ничего не изменилось 🙁
2. удалите
cors
использование пакета и попробуйте.