Как заставить https работать на nodejs и vue.js

#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 использование пакета и попробуйте.