Chrome拡張機能に小さな問題があります。
別のサーバーからJSON配列を取得したかっただけです。しかし、マニフェスト2ではそれができません。指定しようとしcontent_security_policy
ましたが、JSON配列がSSL証明書なしでサーバーに保存されています。
では、マニフェスト1を使用せずに何をすべきでしょうか?
Chrome拡張機能に小さな問題があります。
別のサーバーからJSON配列を取得したかっただけです。しかし、マニフェスト2ではそれができません。指定しようとしcontent_security_policy
ましたが、JSON配列がSSL証明書なしでサーバーに保存されています。
では、マニフェスト1を使用せずに何をすべきでしょうか?
CSPはあなたが説明した問題を引き起こすことはできません。プレーンJSONの代わりにJSONPを使用している可能性が非常に高いです。JSONPは、属性がWebサービスのURLに設定されている<script>
タグをドキュメントに挿入することで機能するため、Chromeでは機能しません。これは、CSPでは許可されていません。src
マニフェストファイルに正しい権限を設定している場合(たとえば"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 for ajaxを使用する場合は、以下を使用してJSONPが要求されていないことを確認してjsonp: false
ください。
$.ajax({url:'...',
jsonp: false ... });
または、使用する場合$.getJSON
:
$.getJSON('URL which does NOT contain callback=?', ...);