javascript - 错误:网络错误:使用 axios.put 方法多次请求服务器 net::ERR_TOO_MANY_REDIRECTS
问题描述
我在尝试进行 api 调用 put 方法请求时收到错误 net::ERR_TOO_MANY_REDIRECTS...
我想做的事情很容易理解,我只是想在用户单击他通过电子邮件获得的链接时执行验证电子邮件...
但是,每当用户单击链接时,页面都无法到达端点以更新用户数据...
这是我server.js
在下面的文件
import path from 'path';
import express from 'express';
import dotenv from 'dotenv';
import colors from 'colors';
import morgan from 'morgan';
import connectDB from './config/db.js';
import bodyParser from 'body-parser';
import exphbs from 'express-handlebars';
import investmentRoutes from './routes/investmentRoutes.js';
import userRoutes from './routes/userRoutes.js';
import cors from 'cors';
dotenv.config();
connectDB();
const app = express();
//View engine setup
app.engine('handlebars', exphbs());
app.set('view engine', 'handlebars');
//Body parser middleware
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
const __dirname = path.resolve();
// Static Folder
app.use('/public', express.static(path.join(__dirname, 'public')));
if (process.env.NODE_ENV === 'development') {
app.use(morgan('dev'));
}
app.use(express.json()); // in order to parse JSON data
app.use((req, res, next) => {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', '*');
res.header('Access-Control-Allow-Credentials', true);
res.header(
'Access-Control-Allow-Headers',
'Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers'
);
app.use(cors({ credentials: true, origin: true }));
next();
});
app.options('*', cors());
app.use('/api/investments', investmentRoutes);
app.use('/api/users', userRoutes);
// app.use('/api/uploads', uploadRoutes);
app.use('/uploads', express.static(path.join(__dirname, '/uploads')));
if (process.env.NODE_ENV === 'production') {
app.use(express.static(path.join(__dirname, '/frontend/build')));
app.get('*', (req, res) =>
res.sendFile(path.resolve(__dirname, 'fronted', 'build', 'index.html'))
);
} else {
app.get('/', (req, res) => {
res.send('API is running...');
});
}
const PORT = process.env.PORT || 5000;
app.listen(
PORT,
console.log(
`Server running in ${process.env.NODE_ENV} mode on port ${PORT}`.bold.yellow
)
);
我的路线如下:
import express from 'express';
const router = express.Router();
import {
authUser,
registerUser,
getUserProfile,
getUservalidated,
} from '../controllers/userController.js';
import { protect } from '../middleware/authMiddleware.js';
router.route('/').post(registerUser);
router.route('/verify/users/:token').put(getUservalidated);
router.post('/login', authUser);
router.route('/profile').get(protect, getUserProfile);
export default router;
我的功能是让用户得到验证
const getUservalidated = asyncHandler(async (req, res) => {
const emailToken = req.params.token;
const userInfo = jwt.decode(emailToken);
const now = new Date();
if (now.getTime() <= userInfo.exp * 1000) {
const user = await User.findById(userInfo.id);
if (user) {
try {
user.isValidated = true;
const userUpdated = await user.save();
console.log(userUpdated);
res.status(201).json(userUpdated);
} catch (error) {
res.status(500).json(error.message);
}
}
}
});
当用户单击要重定向的电子邮件上的链接时调用我的反应文件...
import axios from 'axios';
import React from 'react';
import { useHistory } from 'react-router-dom';
const Verify = ({ location }) => {
const history = useHistory();
const getDataVerified = async () => {
const emailToken = location.pathname.replace('/verify/users/', '');
const config = {
headers: {
'Content-Type': 'application/json; charset=UTF-8',
Accept: 'application/json',
},
};
const address = `/api/users/verify/${emailToken}`;
console.log(address);
await axios
.put(address, { localStorageToken: emailToken }, config)
.then((res) => {
console.log(res);
history.push('/admin/dashboard');
})
.catch((error) => console.log(error));
};
getDataVerified();
return <></>;
};
export default Verify;
解决方案
推荐阅读
- node.js - how to run the dialogflow node js?
- database - 如何在neo4j中映射两列相同的值
- sql - Compare two tables with the same columns and report the difference keeping one column as the reference column
- mysql - 命名应该包含 OR 含义的 sql 属性的最佳方法是什么
- javascript - 单击锚标记时如何显示div
- r - 如何从单元格中提取一些数据?
- python - 如何以“XLSX”excel 格式将我的 Pandas DataFrame 保存到 Azure Data Lake Gen2 帐户?
- debugging - 多次运行后 Intellij 没有在断点处停止
- html - 背景与图案叠加 CSS
- python - 如何进行视频取景?