Access-Control-Allow-Origin для расширения хрома

Я делаю расширение Chrome, которое извлекает данные с моего собственного сервера. Он использует около 4 httpRequests за раз, но иногда я получаю консольную ошибку следующим образом:

XMLHttpRequest cannot load http://apps.radionsm.lv/apps/system/index.php?request=now. Origin chrome-extension://egkddfmbidfobhchndockbhjancbpfkd is not allowed by Access-Control-Allow-Origin. для каждого иногда нет.

Если я отправлю header('Access-Control-Allow-Origin: *');, это исправить?

Ответ 2

Вы пытаетесь использовать общий ресурс совместного использования (CORS). Плохая новость заключается в том, что без сервера как среднего человека нет способа сделать это на обычной веб-странице. Хорошей новостью является то, что в расширении chrome вы можете запросить разрешение на доступ к любому URL-адресу, который вы хотите. Просто поместите что-то подобное в ваш файл manifest.json.

Разрешить подключения к вашему сайту:

 "permissions": [
    "http://*.radionsm.lv/"
  ],

Разрешить подключения к любому сайту:

 "permissions": [
    "http://*/"
  ],

Когда пользователь установит расширение, Chrome сообщит им о разрешениях, необходимых в диалоговом окне, до завершения установки.

Ответ 3

У Chrome Extensions есть два "режима" при выполнении междоменных XHR-запросов:

1) Если домен находится в разделе "Разрешения" файла manifest.json - запрос не имеет заголовка "Origin", и он всегда преуспевает.

2) Если домен не находится в "разрешениях" - запрос включает заголовок "Origin" со значением "chrome-extension://...". Это означает, что запрос является запросом CORS, а ответ должен иметь допустимый заголовок Access-Control-Allow-Origin для успеха.