在 Apifox 中设置 CSRF 验证前置操作

场景回顾:
借助 Laravel Fortify 和 Laravel Sanctum 开发单页面应用程序(SPA)建议使用 Web 守卫。所以在请求接口的时候需要带上 CSRF TOKEN,以下是来自 Laravel Fortify 得引用。

如果你尝试使用 Laravel Fortify 来验证单页面应用程序(SPA),你应该结合使用 Laravel 的默认 web 守卫和 Laravel Sanctum

实现:
将下面脚本设置为 Apifox 的前置公共脚本,就可以完成对 CSRF 的验证。

// 获取 Header 参数对象
var headers = pm.request.headers;

// 添加或修改 header 参数
headers.add({
  key: "Accept",
  value: "application/json"
});


// 定义一个函数来发送请求以获取 CSRF token
function fetchCSRFToken() {
  // 获取当前环境的 base_url
  const baseUrl = pm.request.getBaseUrl();
  if (!baseUrl) {
    console.error("Base URL is not set in the current environment");
    return;
  }

  // 构造获取 CSRF token 的请求
  var csrfRequest = {
    url: baseUrl + "/sanctum/csrf-cookie", // 使用 getBaseUrl 获取当前环境的 base_url
    method: "GET",
    headers: {
      "Content-Type": "application/json",
    },
  };

  // 发送请求以获取 CSRF token
  pm.sendRequest(csrfRequest, function (err, response) {
    if (err) {
      console.error("Error fetching CSRF token:", err);
    } else {
      const csrfToken = response.cookies.find(cookie => cookie.name === "XSRF-TOKEN");
      const decodedToken = decodeURIComponent(csrfToken.value);
      if (csrfToken) {
        // 将 CSRF token 添加到全局请求头中
        pm.request.headers.add({
          key: "X-XSRF-TOKEN",
          value: decodedToken,
        });
      } else {
        console.error("CSRF token not found in response cookies");
      }
    }
  });
}

// 在发送当前请求之前调用 fetchCSRFToken 函数
fetchCSRFToken();

截图:

在 Apifox 中设置 CSRF 验证前置操作

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!