スポンサーリンク

このドキュメントの内容は、以下の通りです。

FlashのSWFにクロスドメインのアクセスを許可するときは、crossdomain.xmlにアクセス許可を定義します。マイクロソフトのSilverlightでもクロスドメインでのアクセスを許可するためにドメイン間ポリシーファイルで定義する必要があります。

HTTPのサポート


Silverlightは、HTTP/HTTPSの通信を行うことができます。
  • 同一ドメインの呼び出しは常に可能
  • GET/POSTのみがサポート
  • 標準要求ヘッダーとカスタム要求ヘッダーをサポート
  • ステータスコードは、200 OK と 404 Not Found のみが使用可能

HTTP通信


HTTP通信を行うためのクラス
  • WebClient
  • HttpWebRequest/HttpWebResponse

ヘッダ


リクエストのヘッダは、カスタマイズ可能だが、制限付きヘッダー(cookieとか)は設定することはできません。

同一ドメイン通信


Silverlightの通信は、同じドメイン、同じ発信元サイトにあるWebサービスの呼び出しがデフォルトでサポートされています。

同じドメインの場合、下記の制限があります。
  • 同じプロトコル
  • 同じサブドメイン
  • 同じポート
呼び出すことができないケース
  • 異なるプロトコル
  • 異なるホスト
  • 異なるポート

ドメイン間通信とドメイン間ポリシーファイル


Silverlightから別のドメインのWebサービスを呼び出すためには、ドメインのルートにドメイン間ポリシーファイルを設置する必要があります。
Silverlightは、2種類のドメイン間ポリシーファイルがサポートされます。

Flashドメイン間ポリシーファイル crossdomain.xml
Silverlightドメイン間ポリシーファイル clientaccesspolicy.xml

通信の手順
1. ドメイン間通信の場合、Webサービスのルートの Silverlight ドメイン間ポリシーファイル(clientaccesspolicy.xml) を探します。
2. 404 Not Found等が返された場合、ルートにあるFlashドメイン間ポリシーファイル(crossdomain.xml)を探します。

ドメイン間ポリシーファイルは下記の制限を受けます。
  • ドメイン間ポリシーファイルへのリダイレクトはできません。
  • ドメイン間ポリシーファイルはアプリケーションのセッション間のみ有効です。
通信先のURIに応じてSilverlightは、ドメイン間ポリシーファイルへのアクセスは下記の振る舞いをします。
要求URI http://foo.com/services/data の場合
http://foo.com/clientaccesspolicy.xml を探します。

要求URI http://news.foo.com/services/data の場合
http://news.foo.com/clientaccesspolicy.xml を探します。

要求URI http://foo.com:8080/services/data の場合
http://foo.com:8080/clientaccesspolicy.xml を探します。

ドメイン間通信とセキュリティ


Silverlightの通信では、 Cookie が送信されます。
ほかのドメイン(foo.com)に設置されたSilverlightがbar.comへのアクセスを許可される場合、foo.comのSilverlightがbar.comへアクセスするときにbar.comのCookieも送信されます。bar.comのセッション管理がCookieで行われる場合、注意が必要になります。

ドメイン間ポリシーファイルでほかのドメインにアクセスを許可する場合には、ほかのドメインへ提供してもかまわない情報しか返してはいけません。

clientaccesspolicy.xml


すべてのドメインからアクセスを許す例です。
/api へのアクセスが許可されます。
サブパスは含まれません。

<?xml version="1.0" encoding="utf-8"?>
<access-policy>
  <cross-domain-access>
    <policy>
      <allow-from>      
        <domain uri="*"/>
      </allow-from>      
      <grant-to>      
        <resource path="/api" include-subpaths="false"/>
      </grant-to>      
    </policy>
  </cross-domain-access>
</access-policy>

domainの指定の例
pathの指定
/api で サブディレクトリが無効( include-subpaths="false" の場合
  • /api
  • /api?a=100 にはアクセスすることが可能。
アクセスできないもの
  • /api/
  • /api.txt
  • /api/test
  • /api/test?a=100
include-subpaths="ture" の場合
  • /api/
  • /api/test
  • /api/test?a=100 にもアクセスすることができます。
詳細については、 ネットワーク セキュリティのアクセス制限 Silverlight2 を参照してください。

スポンサーリンク
スポンサーリンク
 
いつもシェア、ありがとうございます!


もっと情報を探しませんか?

関連記事

最近の記事

人気のページ

スポンサーリンク
 

過去ログ

2020 : 01 02 03 04 05 06 07 08 09 10 11 12
2019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12

サイト

Vim入門

C言語入門

C++入門

JavaScript/Node.js入門

Python入門

FreeBSD入門

Ubuntu入門

セキュリティ入門

パソコン自作入門

ブログ

トップ


プライバシーポリシー