【发布时间】:2019-12-22 07:36:09
【问题描述】:
CSRF 令牌未添加到 XMLhttpRequest 的标头中。
为了确保所有其他代码都能正常工作,我尝试使用对服务器的 GET 请求,并且一切正常。但是,当我将 CSRF 令牌添加到标头时,代码在添加标头时停止运行。
// [PROBLEM CODE]
// Initialize new request
const request = new XMLHttpRequest();
const currency = document.querySelector('#currency').value;
request.setRequestHeader({'csrfmiddlewaretoken': csrftoken}); // [<---HERE]
request.setRequestHeader("Content-Type", "text/plain;charset=UTF-8"); // [<---HERE]
request.open('POST', '/convert');
// [THIS WORKS]
// Initialize new request
const request = new XMLHttpRequest();
const currency = document.querySelector('#currency').value;
request.open('GET', '/convert');
request.send();
当我取出两行有问题的代码时,setRequestHeader 并发出 POST 请求。我收到的错误消息是“禁止(CSRF 令牌丢失或不正确。):/convert”
【问题讨论】:
标签: javascript django post xmlhttprequest csrf