Ottieni JSON in un’estensione di Chrome

Piccolo problema con la mia estensione Chrome.

Volevo solo ottenere un array JSON da un altro server. Ma manifest 2 non mi permette di farlo. Ho provato a specificare content_security_policy , ma l’array JSON è memorizzato su un server senza certificato SSL.

Quindi, cosa dovrei fare senza usare manifest 1?

Il CSP non può causare il problema che hai descritto. È molto probabile che tu stia utilizzando JSONP invece del semplice JSON. JSONP non funziona in Chrome, perché JSONP funziona inserendo un tag nel documento, il cui attributo src è impostato sull'URL del webservice. Questo non è consentito dal CSP .

A condizione che tu abbia impostato il permesso corretto nel file manifest (es. "permissions": ["http://domain/getjson*"] , sarai sempre in grado di ottenere e analizzare il 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(); 

Quando usi jQuery per ajax, assicurati che JSONP non sia richiesto usando jsonp: false :

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

Oppure, quando si usa $.getJSON :

 $.getJSON('URL which does NOT contain callback=?', ...);