我正在做一个用react + tailwind + vite开发的个人项目。在我的注册组件中,我需要将一些信息从客户端( localhost:5173 )发布到服务器端( localhost:5514 ),但我不断收到此错误:
POST https://localhost:5514/api/auth/signup net::ERR_SSL_PROTOCOL_ERROR
。我相信这与浏览器上的“不安全”警告有关,并且我找不到解决此问题的任何解决方案。
我尝试添加一些 CORS 配置,但没有任何变化。
import express from "express";
import cors from "cors";
import http from "http";
import dotenv from "dotenv";
import mongoose from "mongoose";
import authRoutes from "./src/routes/authRoutes.js";
dotenv.config();
const PORT = process.env.PORT || 5514;
const app = express();
app.use(express.json());
app.use(cors({
origin: 'https://localhost:5173',
methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
allowedHeaders: ['Content-Type', 'Authorization'],
credentials: true
}));
app.get("/", (req, res) => {
return res.send("Hello!");
});
app.options('*', cors());
app.use("/api/auth", authRoutes);
const server = http.createServer(app);
mongoose
.connect(process.env.MONGO_URL!)
.then(() => {
server.listen(PORT, () => {
console.log(`server is listening on ${PORT}`);
});
})
.catch((err) => {
console.log("database connection failed. server didn't start.");
console.log(err);
});
如果浏览器显示错误,但页面加载,它可能只是向您报告某些连接加密正在工作,但还没有达到任何严重的现代水平。
大多数框架服务器都开启了 SSL,有点名义上的安全。
例如,本地主机在使用自动自签名证书时正在侦听。
您想要做的是从客户端和服务器获取详细信息,以查看 SSL 握手在何处发生故障。
在现实世界中,SSL 可能会失败的其他方式有很多,不值得列出所有非常罕见的情况...但例如,系统时间可能不同步。
可能 - 默认情况下,只有浏览器会提供详细的错误信息。
如果您正在进行“dogfood”测试,您可以尝试使用
http:
URL,但请记住,这非常俗气,有可能不明确执行此操作。