Как отправить XHR-запрос только на реальные домены? - PullRequest
0 голосов
/ 16 марта 2020

Я отправляю 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();
        }       
}

1 Ответ

0 голосов
/ 16 марта 2020

Вы можете использовать регулярное выражение, чтобы определить, является ли строка допустимым URL-адресом, начинающимся с HTTP / HTTPS.

Например:

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

См. this Сообщение переполнения стека.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...