如何仅将XHR请求发送到真实域?

时间:2020-03-15 22:00:17

标签: javascript google-chrome-extension xmlhttprequest

我正在发送XMLHttpRequest,并且只希望将其发送到真实域,这些真实域不是null也不是Chrome内部的chrome:内部域。

直到现在我仍然无法解决这个问题-我的XMLHttpRequest在任何情况下都可以发送-但是如果使用currentDomaon == 0currentProtocoll == "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();
        }       
}

1 个答案:

答案 0 :(得分:-2)

您可以使用正则表达式确定字符串是否为以HTTP / HTTPS开头的有效URL。

例如:

https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)

请参阅this堆栈溢出帖子。