Sì, è necessario un file clientaccesspolicy.xml nel ROOT del dominio del servizio (webservices.mydomain.net).
Per impostazione predefinita, Silverlight supporta le chiamate ai servizi Web sullo stesso dominio o sito di origine. Lo stesso dominio indica che le chiamate devono utilizzare lo stesso dominio secondario, protocollo e porta. Questo è per motivi di sicurezza e previene le contraffazioni tra domini.
Ecco un esempio di file:
<?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>
Ciò consentirebbe richieste solo da intranet.mydomain.net.
Modifica
E 'stato chiesto: Come questo lavoro se ho due servizi WCF? /ServiceA/a.svc e /ServiceB/b.svc e voglio che ServiceA sia aperto a chiunque, ovunque e ServiceB per funzionare solo dalla mia intranet?
Il file politica sarebbe simile a questa:
<?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>
Come questo lavoro se ho due servizi WCF? '/ ServiceA/a.svc' e'/ServiceB/b.svc' e voglio che ServiceA sia aperto a chiunque, ovunque, e ServiceB funzioni solo dalla mia intranet? È possibile dal file crossdomain? – Nate
Ho modificato la mia risposta. – DaveB
Funzionerebbe su Safari? Sembra che Safari non supporti il cross-domain xml-s per impostazione predefinita. Certo, potrebbe non essere importante ... – Gyuri