Я пытаюсь получить данные из 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,