localtunnel и CORS не работают должным образом

#node.js #express #socket.io #cors #localtunnel

Вопрос:

Я использую localtunnel, чтобы открыть свой сервер и интерфейс. Прямо сейчас у меня есть очень простая настройка, подобная этой:

 const httpServer = require('http').createServer();
const socketIO = require('socket.io');

const io = socketIO(httpServer, { cors: { origin: '*' } });

io.on('connection', (socket) => {
  ...
});

httpServer.listen(5000, () => {
  console.log(`Listening on the port 5000`);
});

 

Затем я открываю этот сервер с помощью localtunnel lt --port 5000 . Затем я получаю URL-адрес, настраиваю его в своем интерфейсе React, запускаю приложение для интерфейса, работающее на порту 3000, а затем lt --port 3000 . Затем, когда я пытаюсь подключиться к серверной части, я продолжаю получать эту ошибку.

 Access to XMLHttpRequest at 'https://tame-mayfly-63.loca.lt/socket.io/?EIO=4amp;transport=pollingamp;t=NbU6WbU' from origin 'https://spotty-robin-42.loca.lt' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
 

Сначала я подумал, что это какая-то ошибка с localtunnel, но потом попробовал, ngrok и ошибка та же. Я включаю все источники из CORS, поэтому я не знаю, что может произойти.

Это curl "https://tame-mayfly-63.loca.lt/socket.io/?EIO=4amp;transport=polling" работает, но я думаю, это потому, что CORS игнорируется при отправке запроса с помощью cURL.

Ответ №1:

Я нашел решение своей проблемы. Похоже, вам сначала нужно получить доступ к динамическому URL-адресу, обслуживающему ваш сервер, и нажать «Продолжить». После этого CORS больше не будет проблемой.

Комментарии:

1. Как также говорится на странице, если присутствуют заголовки, специфичные для браузера, они будут блокироваться до тех пор, пока вы не укажете заголовки, разрешающие запросы. Страница здесь означает: Размещенная страница из localtunnel для URL-адреса, который они сгенерировали.