2011-08-14 25 views
11

自分のサーバーからデータを取得するChrome拡張機能を作成しています。一度に約4つのhttpRequestsを使用しますが、時々私は次のようにコンソールエラーを受け取ります:クロム拡張のアクセス制御 - 許可元 -

XMLHttpRequest cannot load http://apps.radionsm.lv/apps/system/index.php?request=now. Origin chrome-extension://egkddfmbidfobhchndockbhjancbpfkd is not allowed by Access-Control-Allow-Origin.誰もが時々いいえ。

header('Access-Control-Allow-Origin: *');を送信するとこれが解決されますか?

答えて

18

Chrome拡張機能は、二つの「モード」クロスドメインXHRを要求することがあります。

1)ドメインはmanifest.jsonをファイルの「権限」セクションにある場合を - 要求は「ありません原点 "ヘッダーであり、常に成功します。

2)ドメインが「アクセス許可」にない場合 - リクエストに「chrome-extension:// ...」という値を持つ「Origin」ヘッダーが含まれています。これは要求がCORS要求であることを示します。成功するには、応答に有効なAccess-Control-Allow-Originヘッダーが必要です。

25

クロスオリジンリソース共有(CORS)を実行しようとしています。悪い知らせは、中間者としてのサーバーがなければ、通常のWebページでこれを行う方法がないということです。良いお知らせは、クロム拡張機能で、あなたが望む任意のURLにアクセスする許可を要求することができるということです。 manifest.jsonファイルに次のように入力してください。

は、あなたのサイトへの接続を許可する:

"permissions": [ 
    "http://*.radionsm.lv/" 
    ], 

は、任意のサイトへの接続を許可する:

"permissions": [ 
    "http://*/" 
    ], 

ユーザーが拡張クローム前にダイアログボックスに必要な権限をお知らせしますインストールするとインストールの完了。

+9

特記すべき点 - マニフェストファイルからアクセス許可を更新するために、拡張機能を削除して再インストールする必要がありました。 –

+1

私はここでGeva Talのコメントをアップヴォートしました。さらに、エクステンションをアンインストールしてから再インストールする必要があることをさらに強調したいと思います。 Chrome内から拡張機能を再ロードするだけでは十分ではありません。 – erikprice

関連する問題