目前正在制作一个MERN应用程序,所以我正在使用Node。我将用户的信息存储在本地存储中,因此当他们刷新页面时,他们仍然登录。问题是,如果我对后端进行任何 api 调用,它将导致 net::ERR_CONNECTION_RESET。同样奇怪的是,错误消息看起来像这样:GET http://localhost:3000/api/roadmap/getAllRoadmapsButThumbnails net::ERR_CONNECTION_RESET
,当 localhost:5000 是我的后端端口,但它显示 3000,我的客户端端口。
当用户注销时,我的 api 调用非常好,因此本地存储中没有任何内容。
有没有人遇到过类似的问题,有什么见解?
我尝试过的:
-
将代理从"http://localhost:5000"更改为
"proxy": { "secure": true, "target": { "host": "https://localhost", "port": 5000 } },
- 在 axios 请求中使用完整路径,这导致了 CORS 错误,我没有继续使 CORS 工作,因为在部署网站时使用完整路径可能会导致奇怪的事情,并且修复代理路由似乎是优先事项
我的更多代码
服务器.js:
const express = require("express");
const mongoose = require("mongoose");
const bodyParser = require("body-parser");
const multer = require("multer");
const path = require("path");
const passport = require("passport");
const users = require("./routes/api/users");
const roadmap = require("./routes/api/roadmap");
const app = express();
// Bodyparser middleware
app.use(
bodyParser.urlencoded({
extended: false
})
);
app.use(bodyParser.json());
// DB Config
const db = require("./config/keys").mongoURI;
// Connect to MongoDB
mongoose
.connect(
db,
{ useNewUrlParser: true }
)
.then(() => console.log("MongoDB successfully connected"))
.catch(err => console.log(err));
// Passport middleware
app.use(passport.initialize());
// Passport config
require("./config/passport")(passport);
// Routes
app.use("/api/roadmap", roadmap);
app.use("/api/users", users);
const port = process.env.PORT || 5000; // process.env.port is Heroku's port if you choose to deploy the app there
现在一切都是http,我在上一个网站中没有收到这样的错误,该网站也使用了存储在本地存储中的jwt,那是大约5个月前
。编辑
我尝试的新事物:
- 手动配置代理
- 在没有证书的情况下启动镶边
我的情况的解决方案:使用 fetch 而不是 axios。我没有发布任何客户端代码,但我曾经使用以下命令获取数据:
axios.get("/api/roadmap/getAllRoadmapsThumbnails")
现在,只需执行以下操作:
fetch("/api/roadmap/getAllRoadmapsButThumbnails", { method: "GET" })
为什么它有效。我不知道,也许如果我在 axios 中放置一些标题,axios 也会正常运行。仍然有一些奇怪的事情,在控制台中您可以看到获取日志(您可能需要选中控制台中的"日志XMLHttpRequests"复选框),它显示:
Fetch finished loading: GET "http://localhost:3000/api/roadmap/getAllRoadmapsButThumbnails".
虽然我的后端是 5000,所以它应该是本地主机:5000/api/...
如果您不熟悉此问题,并且遇到从ERR_CONNECTION_RESET到FAILED_TO_LOAD_RESOURCES到其他 ERR 的问题,
试试这些:
尝试使用提取。最好定义标头,例如
{method: "POST", headers: {"Content-Type" : "application/json"}
关闭 Chrome 扩展程序(使用无痕会自动停用扩展程序)
对于 CORS 错误,请下载
npm install cors
然后在您的服务器.js中执行 app.use(cors()),根据以下内容:https://github.com/axios/axios/issues/1414- 手动设置代理并启动 chrome 忽略证书