AdonisJS Error Code "EBADCSRFTOKEN" in Postman in PUT,POST,DELETE 操作

AdonisJS Error Code "EBADCSRFTOKEN" in Postman in PUT,POST,DELETE operation

我在 AdoniJs 中创建了 REST API。在此,我使用 GET、POST、PUT 和 DELETE 方法为 CRUD 操作创建了 API 端点。我使用 shieldjs 作为中间件来验证 CSRF 令牌。我正在从 Postman 拨打 API 电话。

首先,我调用了 API 的 GET 方法,我正在正确获取预期数据和 3 个 cookie 作为响应的一部分,其中一个是 XSRF-TOKEN.

但是当我通过将键 X-XSRF-TOKEN 设置为请求 header 中的 cookie 的值 XSRF-TOKEN 来调用 PUT、POST 和 DELETE 方法时,我是在 Postman 中收到错误 EBADCSRFTOKEN 作为响应。

shield.js 文件中 ShieldJS 中 CSRF 的配置

csrf: {
    enable: true,
    methods: ['POST', 'PUT', 'DELETE'],
    filterUris: [],
    cookieOptions: {
      httpOnly: false,
      sameSite: true,
      path: '/',
      maxAge: 7200
    }
}

handler.js 文件中的错误处理程序代码

async handle (error, {request, response }) {
    if (error.code === 'EBADCSRFTOKEN') {
        response.forbidden(error.code)
        return
    }
}

当我在 ShieldJs 中为 csrf 更改 enable: false 的值时,它工作正常但是在我 enable: true 之后我收到错误 EBADCSRFTOKEN.

我在发送 xsrf 令牌时不应该收到此错误代码。

像这样将 filterUris 放在你的路由路径中

csrf: {
    enable: true,
    methods: ['POST', 'PUT', 'DELETE'],
    filterUris: ['/firstroute','*',],
    cookieOptions: {
      httpOnly: false,
      sameSite: true,
      path: '/',
      maxAge: 7200
    }
  }

有关 csrf 的更多信息请访问此网站 adonisjs


第二种方式是

  • 创建 REST API 项目。创建 API 时不需要视图。未获取 csrftoken 时会生成此错误。 所以你可以尝试为唯一 API 创建一个项目,不包括像这样的视图 adonis new projectname --api-only

更多信息请关注 link 如何创建 API 项目。