如何解决使用CRSF和自定义标头在React中重定向
我正在尝试
-
从React / S3-从延伸位点(EC2)的正文中检索CSRF
-
提交表单数据(电子邮件/密码)以及检索到的CRSF和指定数据库的自定义标头
-
重定向用户浏览器。
CSRF加入
var xhr = new XMLHttpRequest();
xhr.onload = function() {
var csrfToken = this.responseXML.getElementsByName('csrf_token')[0].getAttribute('value');
}
xhr.open("GET","url");
xhr.responseType = "document";
xhr.send();
,页面使用
重定向var req = new XMLHttpRequest();
req.onreadystatechange = function (aEvt) {
if (req.readyState == 4) {
if(req.status == 200)
document.write(req.responseText);
else
alert("Error loading page\n");
}
};
req.setRequestHeader("X-Odoo-dbfilter",'data');
req.setRequestHeader("x-crsf-token",csrfToken);
req.send();
并且我已经能够提交带有以下内容的纯HTML表单;
const form = document.createElement('form');
form.method = method;
form.action = path;
for (const key in params) {
if (params.hasOwnProperty(key)) {
const hiddenField = document.createElement('input');
hiddenField.type = 'hidden';
hiddenField.name = key;
hiddenField.value = params[key];
form.appendChild(hiddenField);
}
}
document.body.appendChild(form);
form.submit();
但是结合这种逻辑一直是有问题的。我正在努力寻找一种方法,该方法允许我提交表单数据,自定义标头并重定向用户。在我最近的尝试中,我尝试使用访存
fetch('url',{
method: "POST",// *GET,POST,PUT,DELETE,etc.
mode: "no-cors",// no-cors,cors,*same-origin
cache: "no-cache",// *default,no-cache,reload,force-cache,only-if-cached
credentials: "include",// include,*same-origin,omit
headers: {
//"Content-Type": "application/json","Content-Type": "application/x-www-form-urlencoded","X-Odoo-dbfilter": "data"
},redirect: "follow",// manual,*follow,error
referrer: "no-referrer",// no-referrer,*client
body: formData,// body data type must match "Content-Type" header
})
.then(response => {
if (response.redirected) {
window.location.href = response.url;
}
})
.catch(function(err) {
console.info('here be errors');
});
但是仍然不清楚哪种方法最好。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。