在 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();
截图:
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: