XMLHttpRequest在内容脚本中工作正常,但在后台脚本中工作不正常-Chrome扩展

时间:2019-04-22 15:35:38

标签: google-chrome-extension xmlhttprequest

我正在将请求从内容脚本切换到后台脚本,并且代码是相同的,但是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;

});

请注意:此代码在内容脚本中可以很好地工作!

1 个答案:

答案 0 :(得分:0)

loginRequest.anonymous = true;

已经解决了由于从后台脚本发送时不必要的cookie而导致的问题。