2012-03-23 17 views
0

oex 2.0を認証に使用するminus.comにアクセスする必要があるChrome拡張機能のコードを作成していますjavascriptファイル 'test.js'を作成し、それをHTMLファイル 'test.html'に含めた後、Chromeで 'test.html'を読み込んで、認証に使用されるjavascriptコードをテストします。Chromeでエラーが発生しました:「オリジナルファイル://アクセス制御許可元から許可されていません」

このような「test.js」ルックスの構造:

function Ajax(url, options) { 

// some function content 

    // Sending data 
    if (options.method === "POST" && (options.params || options.binaryData)) { 
     if (options.binaryData) { 
      xhr.sendAsBinary(options.binaryData); 
     } else { 
      xhr.send(hashToQueryString(options.params)); 
     } 
    } else { 
     xhr.send(null); 
    } 

    return xhr; 
} 

function refreshToken(refresh_token) { 
    var params = { 
     'grant_type': 'refresh_token', 
     'client_id': API_KEY, 
     'client_secret': API_SECRET, 
     'refresh_token': refresh_token, 
     'scope': 'read_all modify_all upload_new' 
    } 

    new Ajax("https://minus.com/oauth/token", { 
     params: params, 

     onSuccess: function(response) { 
      console.log(response.access_token); 
     }, 

     onError: function(response) { 
      console.log('error: wrong_token'); 
     } 
    });    
} 

refreshToken(); 

私は「test.js」をテストするためにChromeで「test.htmlという」にロードされると、それはコンソールにエラーを促し"XMLHttpRequestはhttps://minus.com/oauth/tokenをロードできません"というメッセージが表示されます。... Originファイル:// Access-Control-Allow-Originによって許可されていません。私はオプション "--allow-file-access-from-files"または "--disable-web-security"でChromeを起動しようとしましたが、問題は解決しませんでした。しかし、 "Ajax"関数の "Sending data"部分にコメントした場合、エラーはありません。

誰もがここで何が起こっているアイデアはありますか?

ありがとうございます!

+1

私はあなたのリクエストをクロスドメインと呼んでいると思います。そうした場合、Google Chromeはこのエラーを発行します。 – Raptor

+0

どのようにこの問題を解決するには? – chaohuang

答えて

1

あなたは、アプリケーションをクロスドメインコールをサポートするパッケージ化されたアプリケーションにすることで解決します。ホストされたアプリケーションはそうではありません。

あなたはまた、あなたの問題について非常に具体的にCross-Origin XMLHttpRequest in chrome extensions

+0

こんにちはMariusさん.crxファイルに拡張機能をパックしましたが、Chromeに読み込む方法がわかりません。 Chrome拡張ページに[展開された拡張機能を読み込む]オプションのみが表示されているようです。 – chaohuang

+0

@chaohuangちょうどそれをchromeにドラッグアンドドロップするとインストールされます。ただし、解凍された拡張子ではなくcrxの場合、それは何の違いもありません。 Mariusが意味することは、拡張機能がホストされたアプリケーションであれば、ドメイン間のリクエストは得られませんが、それはあなたのケースではないようです。 – Stefano

+0

私はcrxファイル(ファイル - >ファイルを開く)を開くだけでそれをインストールしようとしていると思うが、ドラッグアンドドロップはStefanoの言うとおりに動作するはずです。 –

2

を読むことをお勧めします:あなたはあなたの拡張機能のマニフェストにクロスドメインにアクセスできるようにしたいホストを追加する必要があります。

http://code.google.com/chrome/extensions/xhr.html

{ 
    "name": "My extension", 
    ... 
    "permissions": [ 
    "https://*.minus.com/" 
    ], 
    ... 
} 

側の編集

私が多くの拡張機能を有効にしていると、クロームに奇妙なクロスドメインエラーが出ることがあります。私は少なくともいくつかの機能を無効にしなければなりません。拡張機能をリフレッシュすると機能します。あるいは時にはChromeを再起動します。

+0

こんにちは、ステファノ、あなたが示唆したように 'manifest.json'ファイルにホストドメイン "https://*.minus.com/"を追加しましたが、エラーが "Origin chrome-extension:// imoialplpijakfpmofocnamgopchikjk Access-Control-Allow-Originによって許可されていません。私はまだ欠けていることはありますか?ありがとう! – chaohuang

+0

@chaohuangどのように正確にtest.htmlを読み込みますか?あなたのバックグラウンドページ、ブラウザのアクション、または...ですか? (それはどんな場合でも動作するはずですが...) – Stefano

+0

'test.html'は私の背景ページです。 – chaohuang