1

ローカル ファイル システムからロードされ、awesomiumを使用してレンダリングされた Web ページがあります。ページはAngularJSを使用してページの一部をレンダリングしています。ただし、Dom Exception 18 を生成する AngularJS コントローラーの一部に問題があります。

angular-1.0.0rc10.js @ 行 5349 エラー: SECURITY_ERR: DOM 例外 18

この例外は、AngularJS コントローラーの最後に次のコードが存在するために発生しているようです。

$http({method: 'GET', url: 'http://placeholdermetaserver.appspot.com/list?format=json&game=Heist'})
.success(function(data)
{
    //Do stuff with data
});

奇妙なことに、AngularJS の $http オブジェクトの代わりに単純な XMLHttpRequest を使用すると、すべてがうまくいきます。

var request = new XMLHttpRequest();
request.onload = function() {
    //Do stuff with data
};
request.open("GET", "http://placeholdermetaserver.appspot.com/list?format=json&game=Heist", true);

このページを chrome (ローカル ファイル システムから、awesomium と同じ) にロードしただけでは、この例外は生成されません。

何が原因で、どうすれば修正できますか?

4

1 に答える 1

0

この$httpサービスには、いくつかのクロス サイト リクエスト フォージェリ (XSRF) 対策が含まれています。私は Awesomium に特に詳しくないので、どのようなセキュリティ機能が実装されているかはわかりませんが、詳細についてはドキュメント (Awesomium と AngularJS の両方) を参照してください。

http://docs.angularjs.org/api/angular.module.ng.$http

サーバーの観点からは、次のような GET リクエストを送信した場合、教科書 XSRF img タグ攻撃を受けやすくなります。

" http://myapp.com/doSomething/somegame/12345 "

クライアントの観点から、次のようなリクエストを行ったとします。

" http://myapp.com/doSomething/somegame/ " + someId

巧妙なハッカーは、someId を次のようにだますかもしれません。

"@123.45.56.689/myEvilFakeJson.json"

その場合、リクエストはサーバーに対して行われるのではなく、他のサーバーに対して行われます。リクエストの場所をハードコーディングするか、入力のサニタイズに注意を払っている場合、おそらくそれほどリスクはありません。

于 2012-06-01T23:22:58.110 に答える