В расширении для Chrome я пытаюсь загрузить некоторый скрипт с помощью XMLHttpRequest, но получаю следующую ошибку:
Access to XMLHttpRequest at '...' from origin '...' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Как обойти политику CORS и всё таки загрузить нужный скрипт?
Решение заключается в добавлении background script, который регистрирует обработчик события получения заголовков ответа сервера. В обработчике необходимо добавить в ответ сервера заголовок access-control-allow-origin
со значением *
- это заставляет браузер думать, что содержимое ответа сервера может быть доступно для любого "origin", который отправил запрос.
background.js:
chrome.webRequest.onHeadersReceived.addListener(
function (details) {
var rule = {
"name": "access-control-allow-origin",
"value": "*"
};
details.responseHeaders.push(rule);
return { responseHeaders: details.responseHeaders };
},
{ urls: ["<all_urls>"] },
["blocking", "responseHeaders", "extraHeaders"]);
Так же добавим следующие строки в manifest.json:
"background": {
"scripts": [ "background.js" ],
"persistent": true
},
"permissions": [
"webRequest",
"webRequestBlocking",
...
]
Я получаю API от сторонних сервисов на PHP, процесс занимает некоторое времяМетод получения API вызывается AJAX запросом из вьюшки
Как проверить весь collection в MOngoDb для LogIn) Спасибо)
Подскажите, как проверить есть ли у меню подменю? Моя задумка простая: если у элемента li внутри есть элемент ul, значит подменю содержится и родителю...