5

Silverlight アプリ (イントラネット.mydomain.net でホスト) と (webservices.mydomain.net) で WCF サービスを持っています。

クロスサイト ポリシー ファイルは必要ですか? もしそうなら、intranet.mydomain.net からのアクセスのみを許可するとどうなりますか?

4

2 に答える 2

5

Tim Heuerによる「Silverlight でクロス ドメイン ポリシー ファイルを使用する方法」に関する次のリンクを確認することをお勧めします。

http://silverlight.net/learn/videos/all/how-to-use-cross-domain-policy-files-with-silverlight/

以下は、Tim Heuer のブログの別のページで、例も示しています。

http://timheuer.com/blog/archive/2008/04/06/silverlight-cross-domain-policy-file-snippet-intellisense.aspx

代替テキスト

Silverlight アプリと連携し、外部 WCF サービスへの要求を処理する独自の WCF サービスを作成することを検討します。このようにして、何も開いたままにせず、制御されたサービスへの通信のみが許可されます (ただし、言及したサービスは制御下にある可能性があります)。

この方法は、他のサービスが手元になく、頻繁に変更される可能性がある場合にも役立ちます。独自のサービスを介してこれがどのように処理されるかを制御でき、Silverlight コントロールを更新する必要はありません (変更が劇的ではない場合)。

于 2009-12-07T16:51:37.700 に答える
4

はい、サービス ドメイン (webservices.mydomain.net) の ROOT に clientaccesspolicy.xml ファイルが必要です。

既定では、Silverlight は同じドメインまたは元のサイトでの Web サービスへの呼び出しをサポートします。同じドメインとは、呼び出しで同じサブドメイン、プロトコル、およびポートを使用する必要があることを意味します。これはセキュリティ上の理由によるもので、クロスドメインの偽造を防ぎます。

ファイルの例を次に示します。

<?xml version="1.0" encoding="utf-8" ?>
<access-policy>
  <cross-domain-access>
    <policy>
      <allow-from http-request-headers="*">
        <domain uri="http://intranet.mydomain.net"/>
      </allow-from>
      <grant-to>
        <resource path="/" include-subpaths="true"/>
      </grant-to>
    </policy>
  </cross-domain-access>
</access-policy>

これにより、intranet.mydomain.net からの要求のみが許可されます。

編集

質問されました: WCF サービスが 2 つある場合、これはどのように機能しますか? /ServiceA/a.svc と /ServiceB/b.svc で、ServiceA は誰でも、どこからでもアクセスできるようにし、ServiceB はイントラネットからのみ動作するようにしますか?

ポリシー ファイルは次のようになります。

<?xml version="1.0" encoding="utf-8" ?>
<access-policy>
  <cross-domain-access>
    <policy>
      <allow-from http-request-headers="*">
        <domain uri="http://*"/>
      </allow-from>
      <grant-to>
        <resource path="/ServiceA/" include-subpaths="true"/>
      </grant-to>
    </policy>

    <policy>
      <allow-from http-request-headers="*">
        <domain uri="http://intranet.mydomain.net"/>
      </allow-from>
      <grant-to>
        <resource path="/ServiceB/" include-subpaths="true"/>
      </grant-to>
    </policy>
  </cross-domain-access>
</access-policy>
于 2009-12-07T17:42:40.940 に答える