获取 Set-Cookie header 设置 CSRF Coo​​kie 时避免 HTTP 403 错误的最佳方法

Best way to avoid HTTP 403 error when getting Set-Cookie header to set CSRF Cookie

我正在调用具有 CSRF 保护的 REST API。

一切正常。我正在获取令牌并将其发送回服务器。

但是,当我执行第一个请求时或浏览器中未设置 CSRF Coo​​kie 时,它​​总是会抛出 HTTP 403 错误。

这是因为我没有发送回 CSRF 令牌,因为这是服务器发送 Set-Cookie header 以设置 CSRF Coo​​kie 的第一个请求。

第一次向 CSRF-protected API 发送请求时避免此错误的最佳方法是什么?

在发送任何请求之前,我是否应该每次都检查浏览器中是否设置了 CSRF Cookie?

你可以这样做。这是一个虚拟脚本。

checkIfAuthenticated()
.then( token => {
  // user is authorized. use token
})
.catch( err => {
  // oops. not authorized probably. authenticate user here.
});

// and your checkifAuthenticated:

function checkifAuthenticated() {
  return new Promise((resovle, reject) => {
    // perform a http request here to /api?checkauth
    if(api_returned_401) {
      reject('not authenticated');
    } else {
      resolve(tokenOrInfo);
    }
  });
}