1

Я построил расширение chrome и, во время загрузки, мне нужно сделать запрос GET на сервер (попробовав его сейчас с локального хоста).Выполнение запроса HTTP GET из расширения Chrome

С помощью отладчика Chrome я вижу, что вызов выполнен, но он никогда не получен на сервере locahost (который запущен).

код Javascript:

$.get("http://localhost:8080/myproject/api/getInfo", { userId: "me" }) 
    .done(function(data) { 
    alert('Received!'); 
}); 

Это то, что я могу видеть из Chrome отладчика:

Request URL:http://localhost:8080/myproject/api/getInfo?userId=me 
Request Headers 
Provisional headers are shown 
Accept:*/* 
Origin:chrome-extension://ginkmpnhbepolafnopjackbgefh 
Query String Parameters 
view source 
view URL encoded 
userId:me 

Если я ставлю http://localhost:8080/myproject/api/getInfo?userId=me непосредственно в браузере он работает хорошо.

Что не так?

+2

Имеет ли ваш запрос на расширение [права доступа] (https://developer.chrome.com/extensions/xhr)? – robertklep

ответ

0

У меня проблема была в том, что браузер блокировал вызовы с HTTPS сайта (где отображается плагин) к HTTP://localhost.

Он начал работать, когда я развернул его для производства с URL-адресом сервера HTTPS.

1

Я не знаю, в чем проблема в приведенном выше коде, но то же самое, что я сделал с помощью кода ниже, создав AJAX XMLHttpRequest Объект на скрипте расширения chrome.

var userid="me"; 
 
var xmlHttpRequest = (window.XMLHttpRequest) ? new window.XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); 
 
xmlHttpRequest.open("GET","http://localhost:8080/myproject/api/getInfo",true); 
 
xmlHttpRequest.send("userid="+userid); 
 
xmlHttpRequest.onreadystatechange = function() 
 
{ 
 
\t if(xmlHttpRequest.readyState == XMLHttpRequest.DONE) 
 
\t { 
 
\t \t alert('Received!'); 
 
\t } 
 
}