Получить JSON в расширении Chrome

Небольшая проблема с моим расширением Chrome.

Я просто хотел получить массив JSON с другого сервера. Но манифест 2 не позволяет мне это сделать. Я попытался указать content_security_policy, но массив JSON хранится на сервере без сертификата SSL.

Итак, что мне делать без использования манифеста 1?

9 голосов | спросил user1175307 7 PM00000010000003731 2012, 13:27:37

1 ответ


0

CSP не может вызвать проблему, которую вы описали. Весьма вероятно, что вы используете JSONP вместо простого JSON. JSONP не работает в Chrome, поскольку JSONP работает путем вставки тега <script> в документ, src для атрибута задан URL-адрес веб-службы. Это запрещено CSP .

При условии, что вы установили правильное разрешение в файле манифеста (например, "permissions": ["http://domain/getjson*"], вы всегда сможете получить и проанализировать JSON:

var xhr = new XMLHttpRequest();
xhr.onload = function() {
    var json = xhr.responseText;                         // Response
    json = json.replace(/^[^(]*\(([\S\s]+)\);?$/, '$1'); // Turn JSONP in JSON
    json = JSON.parse(json);                             // Parse JSON
    // ... enjoy your parsed json...
};
// Example:
data = 'Example: appended to the query string..';
xhr.open('GET', 'http://domain/getjson?data=' + encodeURIComponent(data));
xhr.send();

При использовании jQuery для ajax убедитесь, что JSONP не запрашивается с помощью jsonp: false:

$.ajax({url:'...',
        jsonp: false ... });

Или при использовании $.getJSON :

$.getJSON('URL which does NOT contain callback=?', ...);
ответил Rob W 7 PM00000040000004931 2012, 16:07:49

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132