localtunnel 和 CORS 无法正常工作

问题描述

我正在使用 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`);
});

然后我使用带有 lt --port 5000 的 localtunnel 公开此后端。然后我获取 URL,在我的 React 前端中设置它,启动在端口 3000 上运行的前端应用程序,然后 lt --port 3000。然后,当我尝试连接到后端时,我不断收到此错误

Access to XMLHttpRequest at 'https://tame-mayfly-63.loca.lt/socket.io/?EIO=4&transport=polling&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=4&transport=polling" 有效,但我想这是因为在使用 cURL 发出请求时忽略了 CORS。

解决方法

我找到了解决问题的方法。看起来您首先需要访问为您的后端提供服务的动态 url,然后单击“继续”。这样做之后,CORS 将不再是问题。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...