我正在将请求从内容脚本切换到后台脚本,并且代码是相同的,但是XMLHttpRequest无法使我保持登录状态。
我的目标是登录用户并更改其密码-这需要2个POST请求。第二个失败。
老实说,我不知道该怎么办,完全迷路了。
背景脚本:
chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
// FIRST REQUEST
var loginRequest = new XMLHttpRequest();
loginRequest.open("POST", "https://.../login.php", true);
loginRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
loginRequest.send("user credentials...");
loginRequest.onload = function() {
// SECOND REQUEST
var changeRequest = new XMLHttpRequest();
changeRequest.open("POST", "https://.../changePassword", true);
changeRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
changeRequest.send("old pass... new pass...");
changeRequest.onload = function() {
// ISSUE: changeRequest.responseURL is back at the login page? WHY?
if (changeRequest.responseText.includes("Password successfully changed!")) {
sendResponse({passwordChanged: true});
} else {
sendResponse({passwordChanged: false});
}
}
}
return true;
});
请注意:此代码在内容脚本中可以很好地工作!
答案 0 :(得分:0)
loginRequest.anonymous = true;
已经解决了由于从后台脚本发送时不必要的cookie而导致的问题。