クロスサイトリクエストフォージェリを防ぐために、Silverlight 4(およびそれ以降)では、画像とメディア以外のすべてのリクエストに対して、デフォルトでサイトオブオリジン通信のみが許可されます。Silverlightコントロールが別のドメインのサービスにアクセスできるようにするには、サービスが明示的にオプトインしてクロスドメインアクセスを許可する必要があります。
したがって、SilverlightアプリケーションがホストされているWebサイトのルートに配置ClientAccessPolicy.xml
する必要があります。CrossDomain.xml
以下にサンプルを示しClientAccessPolicy.xml
ます(他のドメインから現在のドメインのすべてのリソースへのアクセスを許可します)。
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="SOAPAction">
<domain uri="*"/>
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
そしてここにサンプルがありCrossDomain.xml
ます:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-http-request-headers-from domain="*" headers="SOAPAction,Content-Type"/>
</cross-domain-policy>
ドメインの境界を越えてサービスを利用できるようにする方法については、こちらをご覧ください。