问题描述
我的POST方法不起作用,但是我的GET方法起作用。我在哪里错了?
服务器JS
const Express = require('express');
const App = Express();
const BodyParser = require('body-parser');
const Cors = require('./Others/Cors');
App.use(Cors);
Cors Options JS
const Cors = require('cors');
let CorsOptions = {
origin: '*',optionsSuccessstatus: 200,}
module.exports = Cors(CorsOptions);
const Express = require('express');
const Router = Express.Router();
const Controller = require('../Controllers/Scenarios');
const Upload = require('../Others/MulterBody');
const Cors = require('../Others/Cors');
Router.get('/Scenarios_GetAll',Controller.GetAll);
Router.post('/Scenarios_ChangeActive',Controller.ChangeActive);
Router.get('/Scenarios_DeleteOne/:id',Controller.DeleteOne);
Router.post('/Scenarios_AddOne',Upload.none(),Controller.AddOne);
Router.post('/Scenarios_UpdateOne',Controller.UpdateOne);
Router.get('/Scenarios_GetListForGame/:id',Controller.GetListForGame);
module.exports = Router;
解决方法
Browser devtools控制台日志和“网络”选项卡可帮助解决此类问题。
尝试将此行添加到路由器定义中,以处理http OPTIONS动词。
Router.options('*',Cors)
您可能需要重构代码,以使纯cors()
方法调用可用于options
。摆脱掉您的Cors Options JS源文件,并像这样编写路由器。
...
const Upload = require('../Others/MulterBody');
const cors = require('cors');
cors({
origin: '*',optionsSuccessStatus: 200,});
Router.options('*',cors());
Router.get('/Scenarios_GetAll',Controller.GetAll);
...