javascript - 为什么我的 XMLHttpRequest 的 readystate 为 4 但状态为 0?

标签 javascript post google-chrome-extension xmlhttprequest

我的 Chrome 扩展中有一个内容脚本,它在一些 HTTPS 页面上运行。它正在尝试向 HTTP 页面(通过后台脚本)发送 POST 请求,该页面是我设置的 API 的路由。我正在尝试发送 JSON 数据。但是,即使就绪状态为 4,我的状态仍为 0。我使用 Postman 执行相同的帖子并且它有效。这让我相信这是一个 HTTPS 协议(protocol)问题,但是我在同一后台脚本中的 HTTP 页面上执行 GET 并且工作正常。那可能是什么问题?这是我的邮政编码:

var string = json;
xhr = new XMLHttpRequest();
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-Type", "application/json");

xhr.onreadystatechange = function () { 
    if (xhr.readyState == 4 && xhr.status == 200) {
        var json = JSON.parse(xhr.responseText);
    }
};
xhr.send(string);

谢谢!

更新:

我使用 chrome 开发人员工具调试后台脚本,发现错误是“对预检请求的响应未通过访问控制检查:请求的资源上不存在 'Access-Control-Allow-Origin' header 。 ”。我猜后台脚本错误不会打印到主控制台。

更新:

我必须将发布到的网站添加到 list 中的权限字段。现在可以了。

最佳答案

我有一个类似的问题,经过几天的调试,我发现的唯一解决方案是通过设置 async 使 XMLHttpRequest 同步XMLHttpRequest 打开方法中的参数为 false。

关于javascript - 为什么我的 XMLHttpRequest 的 readystate 为 4 但状态为 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36416389/

相关文章:

ios - 无法插入时刻-Google Plus API

javascript - 仅从 chrome 扩展程序安全访问 api

javascript - 输入的占位符不会从 <select> 改变

javascript - 识别字符是否包含在引号或单引号内

java - 无法将 HTTP Post 请求发送到登录表单?

php - 使用 PHP 和 CURL 创建新的 etherpad

javascript - 如何在php中执行生成CSV文件?

javascript - 对一段代码感到困惑,特别是 null : Eloquent Javascript practice

javascript - captureVisibleTab 返回未定义

JavaScript 从文本字符串 PUT 文件