javascript - Chrome 扩展 XMLHttpRequest 使用 HTTPS 和非常规端口返回 0

标签 javascript google-chrome-extension xmlhttprequest

我正在使用此函数向使用 HTTPS 和非常规端口的服务器发送 XHR 请求:https://www. example.com:10000/request.php

function AJAXInteraction(url, callback, str) {
  var xhr = new XMLHttpRequest();
  xhr.open("POST", url, true);
  xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  xhr.onreadystatechange = function() {
    if (xhr.readyState == 4) {
       var resp = JSON.parse(xhr.responseText);
       approveResponse (resp);
    }
  }
  xhr.send(str);
}

在我的 list 中,我已将权限设置为"*://*/*"

{
  "name": "Test Extension",
  "manifest_version": 2,
  "version": "2.0",
  "description": "Extension Admin Util.",
  "devtools_page": "background.html",
  "content_scripts": [
    { "matches": ["http://*/*"], "js": ["content_script.js"] }
  ],
  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"
  },
  "permissions": [
    "*://*/*",
    "tabs"
  ]
}

XHR 正在返回 0 并使用开发者工具,“网络”选项卡显示它已被取消

我做错了什么?

最佳答案

我不认为非常规端口是问题所在。

当我在链接或按钮事件上发出请求并且我没有删除事件的默认操作并且页面更改并取消 AJAX 请求时,我通常会发生这种情况。

如果这是您的问题,请在您的点击事件上使用 event.preventDefault();,如下所示。

$('a.action-foo').click(function(event){
    event.preventDefault();
    //Make your AJAX request
});

关于javascript - Chrome 扩展 XMLHttpRequest 使用 HTTPS 和非常规端口返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28112334/

相关文章:

javascript - 检查 jquery 的多个输入的值是否为空的更短方法

javascript - 使用Javascript将表单数据发送到服务器并将其存储在服务器中

tomcat - CORS 启用但请求 header 从不同的主机混淆

JavaScript promise 句柄 404

javascript - 在 ES6/TS 中通过 mutate 将对象设置为 null 以匹配 Set 中的条件

javascript - 令 a 和 b 为变量。如何将 a 的值设置为 b 的值,但不在 a 和 b 之间创建引用?

javascript - 用户选择从今天开始 10 年的日期 jquery datepicker

google-chrome - 以编程方式刷新 Chrome 政策?

google-chrome-extension - 安装chrome原生客户端(nacl)

google-chrome-extension - chrome.alarms 返回未定义