Сбой запроса XHR GET в фоновом скрипте - Chrome Расширение разработки - PullRequest
0 голосов
/ 05 марта 2020

Я пытаюсь получить данные из API, используя XHR. Запрос будет сделан, когда я нажму на элемент контекста после выбора некоторого текста. Я добавил разрешение моего локального хоста в файл манифеста и функцию запроса XHR в фоновом скрипте. Но политика CORS по какой-то причине не позволяет этого. В документации расширения Chrome говорится, что я должен использовать его в фоновом скрипте. Я тоже пытался использовать его в скрипте контента. Он отправляет запрос из сценария содержимого на сервер, но не может получить данные.

Может ли кто-нибудь помочь мне в этом случае. Заранее спасибо.

манифест. json

 {
"name": "Towel Reviewer",
"version": "1.0",
"description": "Grabing the Header Name & Header Link",
"permissions": [
    "storage","declarativeContent",
    "activeTab","http://localhost/*",
    "contextMenus","tabs","http://*/*",
    "https://*/*", "http://localhost/*",
    "http://localhost/db1/getdata.php?*"],
"background": {
  "scripts": ["background.js","event.js"],
  "persistent": false
},
"browser_action": {
  // "default_popup": "popup.html",
  "default_icon": {
    "16": "images/get_started16.png",
    "32": "images/get_started32.png",
    "48": "images/get_started48.png",
    "128": "images/get_started128.png"
  }
},
"icons": {
  "16": "images/get_started16.png",
  "32": "images/get_started32.png",
  "48": "images/get_started48.png",
  "128": "images/get_started128.png"
},
"content_scripts":[{
    "matches" : ["<all_urls>"],
    "js" : ["jquery-3.4.1.min.js","content.js","popup.js"]
}],

"manifest_version": 2}

фон. js

let contextMenuItem ={
  "id":"TowelReviewer",
  "title": "Fetch",
  "contexts":["selection"]
};


function make(urls){
  alert(urls)
  var xhr = new XMLHttpRequest();
  xhr.open("GET", urls, true);
  xhr.onreadystatechange = function() {
    if (xhr.readyState == 4) {
      var resp = JSON.parse(xhr.responseText);
      console.log(resp);
    }
  }
  xhr.send();

}


chrome.contextMenus.create(contextMenuItem);
chrome.contextMenus.onClicked.addListener(function(clickData){
  let pre = "https://amzn";
  if(clickData.menuItemId == "TowelReviewer" && clickData.selectionText ){
    if( (clickData.selectionText+"").startsWith(pre)){
      url = "http://localhost/db1/getdata.php?link=";
      url = url + clickData.selectionText;
      make(url);
    }
  }
})

Ошибка из фоновой консоли:

Access to XMLHttpRequest at 'http://localhost/db1/getdata.php?link=https://amzn.to/2asdf' from origin 'chrome-extension://hcilieaalhffbpnnmojonlgkhmebmmcm' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Снимок экрана состояния сервера для извлечения данных с помощью Postman, enter image description here

...