jquery - 使用nodejs express的ajax帖子的CSRF token 不匹配

标签 jquery ajax node.js csrf kraken.js

环境:express 4、jquery、krakenjs、font-awesome

在 controllers/products/index.js 中

module.exports = function (router) {
    router.post('/add',function(req,res){
        // do something
    });
};

在 html 文件中,用户单击图标并将产品添加到购物车

{?products}
    {#products}
        <ul id="{.id}">
            <li class="add"><i class="fa fa-plus"></i></li>
        </ul>
    {/products}
{/products}

对于每个产品,下面的脚本是做ajax post到后端。

$('.add').click(function(e){
       var _id = this.parentElement.id;
       $.ajax({
           url: "/products/add",
           type: 'POST',
           contentType: 'application/json',
           dataType: 'json',
           data: JSON.stringify({
             id: _id
           })
       });
 });

然后服务器响应 500(内部服务器错误)并声明“错误:CSRF token 不匹配”。在没有提交表单的情况下进行 ajax 调用时,我是否需要在 ajax post 中插入 csrf token 或消除 token 验证。

最佳答案

Krakenjs 使用 Lusca 用于 crsf 保护。

Lusca 将 crsf _token 存储在 req.locals 中。

此外,将 View 中的 crsf 标记设置为隐藏/数据属性,并将其作为 ajax 帖子的一部分。

关于jquery - 使用nodejs express的ajax帖子的CSRF token 不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29553624/

相关文章:

javascript - jQuery 确保填写所有表单字段

jquery - 设置已检查 p :selectOneRadio item 的 td

JQuery Ajax 表单和动态创建的表单元素未提交

javascript - Nodejs异步任务和匿名函数

javascript - MongoDB 在本地运行还是通过 Atlas 运行?

asp.net-mvc - 为什么 jqGrid 禁用了我页面的其余部分?

javascript - 几个周期后淡出无法正常工作

javascript - 将对象列表 c# 传递给 javascript 时出错 : undefined variable

javascript - 我如何在数据表中搜索 - 使用 ajax/服务器端加载数据

mysql - 使用 Sequelize 计算关联条目