Tak, potrzebny będzie plik clientaccesspolicy.xml w katalogu głównym domeny usługi (webservices.mydomain.net).
Domyślnie Silverlight obsługuje połączenia z usługami internetowymi w tej samej domenie lub miejscu pochodzenia. Ta sama domena oznacza, że połączenia muszą korzystać z tej samej poddomeny, protokołu i portu. Jest to ze względów bezpieczeństwa i zapobiega fałszowaniu w wielu domenach.
Oto przykładowy plik:
<?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>
Pozwoliłoby wnioski tylko od intranet.mydomain.net.
Edit
Został on zapytał: Jak to będzie działać, jeśli mam dwie usługi WCF? /ServiceA/a.svc i /ServiceB/b.svc i chcę, aby ServiceA był otwarty dla każdego, wszędzie i ServiceB, aby działał tylko z mojego intranetu?
Plik polityka będzie wyglądać następująco:
<?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>
Jak to będzie działać, jeśli mam dwie usługi WCF? '/ ServiceA/a.svc' i'/ServiceB/b.svc' i chcę, aby ServiceA był otwarty dla każdego, wszędzie i ServiceB, aby działał tylko z mojego intranetu? Czy to możliwe z pliku crossdomain? – Nate
Edytowałem swoją odpowiedź. – DaveB
Czy to działa w Safari? Wygląda na to, że Safari nie obsługuje domyślnie xml-ów. Oczywiście, nie ma to znaczenia ... – Gyuri