0

Rails アプリの API を呼び出す chrome 拡張機能を作成しようとしています。現在、APIはjsonを返し、正常に動作しますが、Chrome拡張機能にビルドしようとすると、次のように表示されます:

Content-Security-Policy のため、「http://mysite.com/demo?q=hello?callback=jQuery16409466155741829425_1342489669670&_=1342489677171」からのスクリプトのロードを拒否しました。

ドキュメントhttp://code.google.com/chrome/extensions/contentSecurityPolicy.htmlを調べましたが、サイトを https バージョンに実装しない限り、これを行うことはできないようです。(「デフォルトポリシーの緩和」セクションの下)私は正しく理解したかどうか確信が持てず、これだけのために大きな変更を加えるのはばかげていると感じています。私は誤解されていますか?または、これに対する回避策はありますか?ありがとうございました。

4

2 に答える 2

1

Chrome 拡張機能では、マニフェスト ファイルでソースを定義すれば、クロスサイト XMLHttpRequests が許可されます。 http://code.google.com/chrome/extensions/xhr.htmlを参照してください。

<script>JSONP 実装は、タグを使用して外部スクリプトをロードし、ドキュメントに挿入します。ソースがエントリを通じてホワイトリストに登録されていない限り、マニフェスト バージョン2 がアクティブな"content_security_policy"場合は JSONP を使用できません(これを克服するためにマニフェスト v1 を使用しないでください。これは非推奨であり、適切な代替手段が既に存在するためです)。

JSONP ではなく JSON レスポンスを受信できない場合は、通常のリクエストを使用してデータをフェッチし、コールバックを切り捨ててから解析します。例えば:

// response is the response from the server
// Received through `XMLHttpRequest`, jQuery.ajax, or whatever you used
// cuts of jQuery....(  and the trailing )
response = response.replace(/^[^(]*\(/, '').replace(/\);?$/, '');
于 2012-07-17T11:05:08.983 に答える
0

デフォルトでは、同一オリジン ポリシーにより、ブラウザーはこれを許可しません。

ただし、 jsonpリクエストを作成することでこれを回避できます。

あなたがjqueryを使用しているので、getJSONメソッドでこれはとても簡単です

于 2012-07-17T02:03:11.947 に答える