Nie mogę wysłać zapytania GET z rozszerzenia Chrome

0

Piszę rozszerzenie do Chrome, które musi odpytać webservice o dane. Ponieważ docelowo do requestu będą dołączane fragmenty strony, robię to po stronie content script.
W content.js mam następujący kod:

    const url = 'http://10.48.117.109/mojeapi/analyze';
    var xhr = new XMLHttpRequest();
    xhr.open('GET', url, true);
    xhr.onload = function () {
        // do something to response
        console.log(this.responseText);
    };
    xhr.send();

Dodałam też w manifeście pozycję w permissions:

"permissions": [ "activeTab", "storage", "http://10.48.117.109/*" ],

Niestety nie otrzymuję żadnego zwrotu, ponieważ na xhr.send() dostaję błąd: Failed to load resource: net::ERR_CONNECTION_TIMED_OUT
Gdy ten sam adres przekleję do przeglądarki, to normalnie wyświetla mi testowe "hello world". Tak samo test Postmanem przebiega bez problemów. W Postmanie odpowiada w 51ms.

Próbowałam podmienić adres url na http://wp.pl i w takim wypadku dostaję ostrzeżenie o CORB, ale wchodzi mi w onload (responseText jest pusty). Dlaczego więc mój webservice może robić timeout...?

0

a coś innego masz jak zastąpisz xhr fetchem?

dziwaczny błąd, w teorii może być skutkiem CSP albo jakąś blokadą do adresów lokalnych, no ew. wysyłką do http ze strony na https, ale to wszystko powinno mieć stosowne komunikaty w konsoli, a nie timeout połączenia

fetch("http://10.48.117.109/mojeapi/analyze")
.then(r => r.text())
.then(r => console.log("git", r))
.catch(e => console.error(e))
0

To samo:

content.js:33 GET http://10.48.117.109/mojeapi/analyze net::ERR_CONNECTION_TIMED_OUT
content.js:36 TypeError: Failed to fetch

Teoretycznie adres http://wp.pl też odpytywałam po http, ale może faktycznie uruchomię https w webservisie i sprawdzę (w sumie i tak będzie musiało być to w końcu zrobione). Możliwe, że mam coś nie tak po stronie webservice'u, ale no właśnie o tyle dziwne to jest, że Postman odpytuje bez problemu. Nie wiem, w którą stronę to dalej debugować...

0

a nie możesz podejrzeć w devtoolsach w zakładce network jak komunikacja wygląda? postmanem bym się nie sugerował, bo jednak przeglądarki mają bardzo restrykcyjne podejście jeśli chodzi o CORS, a postman to kompletnie ignoruje.

0

wireshark to the rescue

0

a nie możesz podejrzeć w devtoolsach w zakładce network jak komunikacja wygląda?

Wygląda tak, że request kończy się z błędem: failed net::ERR_CONNECTION_TIMED_OUT

Zrobiłam jeszcze testy na localhoście i tutaj działa bez problemów - zarówno po http jak i po https. Wnioskuję z tego, że coś jest nie tak z moim webservice'm na serwerze (lub odpytaniem po ip...?). Pozostaje dojść, co konkretnie.
Faktycznie zaraz spróbuję porównać requesty w Fiddlerze lub Wiresharku...

0

Fiddler pomógł namierzyć źródło problemu, a było nim... brak HTTPS.
W Fiddlerze zauważyłam, że request idzie po porcie 443, mimo że adres był z http. Po uruchomieniu httpsa na IIS zaczęło działać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1