$sceDelegateProvider

概要

$sceDelegateProviderは、開発者が$sceDelegateサービスの設定を出来るようにしてくれるプロバイダーです。 これは、ホワイトリストとブラックリストに対してのget/setを許可し、 Angularテンプレートが安全に使用できる供給源となるURLを確保するために使用されます。 $sceDelegateProvider.resourceUrlWhitelistと、 $sceDelegateProvider.resourceUrlBlacklistを参照してください。

Angular内での、このサービス全容について詳しく知るために、 厳格なコンテキストのエスケープ(SCE)のページを読むことをお勧めします。

具体的な事例の紹介

  • アプリケーションのホストのURLが、http://myapp.example.com/だとします。
  • ただし、テンプレートの幾つかが別のドメインの、http://srv01.assets.example.com/、http://srv02.assets.example.com/等にあるとします。
  • また、リダレクトでhttp://myapp.example.com/clickThru?....といったURLを開く必要があるとします。

このような事例では、下記のようにしてセキュアな構成を行います。

angular.module('myApp', []).config(function($sceDelegateProvider) {
  $sceDelegateProvider.resourceUrlWhitelist([
    // 同じドメインからの読み込みを許可
    'self',
    // assetsのドメインからの読み込みを許可します。
    // * と ** の違いをしっかりと確認しておいてください。
    'http://srv*.assets.example.com/**']);

  // リダイレクト用のページをリソース対象とした場合はブロックするために、
  // ホワイトリストに対してブラックリストを上書きします。
  $sceDelegateProvider.resourceUrlBlacklist([
    'http://myapp.example.com/clickThru**']);
  });

resourceUrlBlacklist(blacklist)

信頼するリソースURLためのブラックリストの設定・取得を行います。

引数 説明
blacklist(optional)

型:Array

これが提供されると、resourceUrlBlacklistをその提供されたものに差し替えます。 これは配列かnullで無ければいけません。 この配列のスナップショットは、配列への誤った変更を無視する際に使用されます。

この配列に入れることが出来る項目については、こちらのリンクを参照してください。

一般的にブラックリストは、自ドメインによってリダイレクト先が開かれるのをブロックするために使用されます。 そうしなければ、リダイレクト先のドメインから返されるコンテンツが信頼されたリソースであると認識されてしまいます。

ブラックリストはホワイトリストを上書きする最終決定権を持っています。

戻り値 説明
 

型:Array

現在設定されているブラックリストの配列を返します。

デフォルト値は、ホワイトリストに明示的に設定がされていなければ、空の配列になります。(ブラックリスト無し)

resourceUrlWhitelist(whitelist)

信頼するリソースURLためのホワイトリストの設定・取得を行います。

引数 説明
whitelist(optional)

型:Array

これが提供されると、resourceUrlWhitelistをその提供されたものに差し替えます。 これは配列かnullで無ければいけません。 この配列のスナップショットは、配列への誤った変更を無視する際に使用されます。

この配列に入れることが出来る項目については、こちらのリンクを参照してください。

注意: ホワイトリストの配列が空の場合、全てのURLをブロックしてしまいます。

戻り値 説明
 

型:Array

現在設定されているホワイトリストの配列が返ります。 デフォルト値は、ホワイトリストが明示的に指定されていない場合は['self']が設定され、 同じドメイン内のリソースのリクエスのみを受け付けます。

 Back to top

© 2017 Google
Licensed under the Creative Commons Attribution License 3.0.

このページは、ページトップのリンク先のAngularJS公式ドキュメント内のページを翻訳した内容を基に構成されています。 下記の項目を確認し、必要に応じて公式のドキュメントをご確認ください。 もし、誤訳などの間違いを見つけましたら、 @tomofまで教えていただければ幸いです。

  • AngularJSの更新頻度が高いため、元のコンテンツと比べてドキュメントの情報が古くなっている可能性があります。
  • "訳注:"などの断わりを入れた上で、日本人向けの情報やより分かり易くするための追記を行っている事があります。