【发布时间】:2020-06-27 02:24:47
【问题描述】:
我发送 XMLHttpRequest 并且只想将其发送到真实域,这些域不为空,也不是 Chrome 的内部 chrome: 域。
直到现在我都失败了——我的XMLHttpRequest 在任何情况下都在发送——但如果是currentDomaon == 0 或currentProtocoll == "chrome:",它就会变成空的。
我做错了什么?我应该如何调整代码以实现目标?
var currentDomain = "";
var currentProtocol ="";
const processingTabId = {};
function run(tab) {
if (processingTabId[tab.id]) return;
processingTabId[tab.id] = true;
let newUrl = new URL(tab.pendingUrl || tab.url)
currentDomain = newUrl.hostname;
currentProtocol = newUrl.protocol;
var xhr = new XMLHttpRequest();
var protocol = "https://";
var middle = ".myservice/"
var end = "/action/data/";
xhr.open("GET", protocol + middle + currentDomain + end, true);
xhr.responseType = 'document';
if (currentDomain !== null) && (currentProtocol !== "chrome:") {
xhr.send();
}
}
【问题讨论】:
-
您为什么首先尝试向这些域中的任何一个发送请求?这将在什么情况下使用,您不控制请求的发送位置吗?
-
if (currentDomain && currentProtocol ==="https:")
-
@mplungjan
currentDomain可以是任何东西 - 它是没有协议的带有子域的域,currentProtocol也可以是http: -
if (currentDomain) 将测试 null、undefined 和 empty 然后使用
if (currentDomain && currentProtoco.indexOf("http") ===0) -
@mplungjan 那么它应该类似于
if (currentDomain && currentProtocol === ("https:" || "http:"))- 对吗?
标签: javascript google-chrome-extension xmlhttprequest