Я разрабатываю приложение Chrome, которое делает серию запросов к моему API с помощью jquery.ajax. С разрешения URL-адрес для апи, установленного в манифесте, это прекрасно работает:Chrome app jquery AJAX запрос не отправляет пользовательские заголовки
"permissions": [
"https://example.com/*",
"http://example.com/*"
]
Однако, когда я пытаюсь загрузить это на панели инструментов разработчика Chrome, я получаю ошибку:
The field permissions.https://example.com/ is not allowed in manifest.
Я предположил, что это связано с тем, что приложения Chrome переходят на модель CORS, хотя разрешение на URL по-прежнему shown in the documentation. Я пытаюсь реализовать CORS.
{
"name": "My Extensions",
"version": "1.0.7.5",
"manifest_version": 2,
"app": {
"launch": {
"local_path": "pages/index/index.html"
}
},
"description": "Extension description.",
"content_security_policy": "script-src 'self'; object-src 'self'; connect-src self https://example.com http://example.com",
"icons": {
"16": "images/msp-16.png",
"128": "images/msp-128.png",
"256": "images/msp-256.png"
},
"minimum_chrome_version": "14",
"permissions": [
"tts",
"unlimitedStorage",
"storage"
]
}
И Аякса запрос:
$.ajax({
cache: false,
crossDomain: true,
async: false,
headers: {
'apikey': 'myapikey'
},
url: 'https://example/api/auth/',
type: 'POST',
data: {
data: xmlToSubmit
},
success: function(xml) {
//Do the thing
},
error: function(xhr) {
//Do the other thing
}
});
Я прочитал много документации, включая HTML Rocks. Я отправляю пользовательский заголовок «apikey». Сервер настроен как:
Header set Access-Control-Allow-Origin: "*"
Header set Access-Control-Allow-Methods: "POST, GET, OPTIONS"
Header set Access-Control-Allow-Headers: "apikey"
Когда я делаю запрос в из приложения, возвращается сообщение об ошибке, как заголовок apikey не был отправлен. Я получаю ожидаемое сообщение об ошибке xml, которое генерирует api. Я проверил использование Fiddler, и заголовок apikey не отправляется. Я могу отправлять успешные запросы на свой api с другими клиентами REST для расширения Chrome, и мне не нужно устанавливать заголовки серверов для других приложений, отправляющих запросы на api, а также когда я использовал исходные разрешения.
Что мне не хватает? Это просто провал? Я пропустил что-то очевидное в первоначальных разрешениях, которые позволили бы его загрузить?
Я не уверен, что ваш вопрос здесь. – Xan
Aha. Это интересно. Вы проявляете соответствие «устаревшему пакетному приложению», так как оно имеет ключ «app.launch», а не ключ «app.background». [Это сообщение в блоге] (http://blog.chromium.org/2012/11/restricting-extension-apis-in-legacy.html) объясняет, почему ваш первый манифест не работает. Есть ли причина, по которой вы не используете приложение Chrome для нового стиля? – Xan
Кудрявые скобки не загружаются, должны быть квадратные скобки: [link] https://developer.chrome.com/extensions/manifest –