【发布时间】:2019-09-29 08:55:01
【问题描述】:
我正在尝试实现以下工作流程。
- 填充 html 表单
- 提交
- 接收请求的端点(expressjs) 进行一些处理并将带有
req.body的请求发送到另一个后端(django) - Django 向 expressjs 返回响应
问题是我被困在 csrf 级别,更具体地说是遇到此错误:
invalid csrf token
403
ForbiddenError: invalid csrf token
这是我用于请求的代码:
router.post('/registration', function (req, res, next) {
axios.post('http://localhost:8000/register_extended/', JSON.stringify(req.body), {
'Content-Type': 'application/json'
}).then(() => {
console.log('success')
}).catch(() => {
console.log('failure')
})
res.send('respond with a resource');
});
});
这是我的中间件
app.use(bodyParser.urlencoded({ extended: true }));
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(csrfMiddleware);
如何提供有效的 csrf 令牌以满足我的需求? Axios应该是自己处理的,所以我选择了它。
【问题讨论】:
-
似乎您不是从另一个后端向 django 后端发送请求,而是直接从客户端发送。您首先向“/registration”发送一个请求,当该请求成功时,您发送另一个请求,这一次我想是发送到 Django 后端,但仍然来自客户端。对吗?
-
我不明白。 /registration 端点是提交时调用的操作。因此,当我进入 onsubmit 程序时,我会发出另一个请求作为该过程的一部分。当第二个请求返回时,我将返回给客户(这是计划)