【发布时间】:2018-07-17 12:17:37
【问题描述】:
我正在使用受 CSRF 保护的 API。所以我需要做一个 get 调用来获取 CSRF 令牌,然后传递相同的令牌来做 POST 调用。
以下是我尝试过的方式,但我总是得到 CSRF 令牌验证失败作为 POST 调用的响应。
var tryout = new XMLHttpRequest();
tryout.open("GET", "/api/1.0/csrf");
tryout.withCredentials = true;
tryout.setRequestHeader("x-csrf-token", "fetch");
tryout.setRequestHeader("Accept", "application/json");
tryout.setRequestHeader("Content-Type", "application/json; charset=utf-8");
tryout.onreadystatechange = function () {
console.log(this);
var csrfToken = this.getResponseHeader('x-csrf-token');
if(tryout.readyState == 4){
console.log(csrfToken);
tryout.open('POST', '/api/1.0/create');
tryout.setRequestHeader('x-csrf-token', this.getResponseHeader('x-csrf-token'));
tryout.onreadystatechange = function () {
console.log("call 2");
console.log(this.responseText);
};
tryout.send();
}
};
tryout.send();
我怀疑可能是 POST 调用正在启动新会话,因此 CSRF 对该会话无效。
请指导我如何在同一会话中进行两次 xhr 调用?
【问题讨论】:
标签: javascript xmlhttprequest csrf