Я начал новое расширение на основе более старого, которое я написал ранее и которое теперь работает правильно. Схема выполнения xhr вполне обычна для расширений Google Chrome: сценарий содержимого вызывает chrome.extension.sendRequest (data, callback), а фактический межсайтовый запрос выполняется в backround.html.
Кроме того, я убедился, что запрошенный сайт добавлен в раздел «разрешения» manifest.json.
Однако консоль background.html отображает: «... Origin chrome-extension: // .. не допускается Access-Control-Allow-Origin.»
Вопрос следующий: кроме отсутствие целевого домена в «разрешениях» (на самом деле я пробовал даже здесь), ЧТО ЕЩЕ может вызвать эту ошибку ?
Вот несколько важных фрагментов кода:
manifest.json:
{
"name": "Register quote",
"version": "0.0.2",
"permissions": [ "" ],
"background_page" : "background.html",
"content_scripts": [
{
"matches": [
"http://somedomain.com/*"
],
"css": ["register_quote.css"],
"js": ["jquery-1.3.2.min.js", "register_quote.user.js"]
}
]
}
background.html: http://pastebin.com/0zLArvfA
register_quote.user.js:
// here's the final call, how it's prepared by the content script after all:
chrome.extension.sendRequest({
'action': 'sendAjaxRequest',
'url': "http://somedomain.com/the_script.php"
'dataStr': "is_chrome=Y&ticketid=123123123&user=Vladimir+Mityukov&action=get_quoteids"
}, arg_callback);
PS: забыл упомянуть, в консоли backround.html также есть следующая ошибка:
Error in event handler for 'undefined': TypeError: Cannot read property 'length' of undefined
at setupPageActionEvents (chrome/ExtensionProcessBindings:424:36)
at chrome/ExtensionProcessBindings:1021:5
at [object Object].dispatch (chrome/EventBindings:182:28)
at Object. (chrome/EventBindings:237:25)
Я понятия не имею, что означает это сообщение и какая часть моего кода может его вызвать. Сценарии, упомянутые здесь, не мои.