2009-01-12 9 views
2

Je reçois une exception de sécurité lorsque j'utilise System.Net.WebClient pour faire des requêtes HTTP, ce qui est dû au fait que crossdomain.xml ou clientaccesspolicy.xml sur le serveur cible sont manquants ou sont trop restrictifs. Je sais qu'il y a une bonne raison à cela (cookies et contrefaçon de requêtes intersites), mais cela ne s'applique pas dans mon cas car tout ce dont j'ai besoin est de faire demandes HTTP GET simples à des URL arbitraires sans utiliser de cookies ou quoi que ce soit.Silverlight: Comment ignorer (l'absence de) crossdomain.xml avec System.Net.WebClient?

J'ai déjà pensé à une idée d'un proxy qui va chercher les URL, mais cela ressemble plus à une solution de contournement laide, sans parler de la perte de bande passante.

Quel est le moyen (s'il y en a un) de le faire dans Silverlight? Est-ce que j'utilise la bonne classe?

Répondre

2

Je pense que ce n'est pas possible, au moins avec WebClient. L'idée est de restreindre (protéger ...) les clients contre les demandes non désirées à d'autres serveurs. Pour contourner cela, vous pouvez avoir un service Web proxy qui appellera les "URL arbitraires" de votre serveur Web, et transmettra les résultats au client Silverlight. De cette façon, les clients restent protégés pendant que vous atteignez la fonctionnalité souhaitée.

+0

l'idée proxy ouvre bien une boîte de Pandore concernant les exploits possibles (faire votre serveur prendre part à des attaques DDOS par exemple) –

1

Pourquoi voulez-vous vous en débarrasser?

Si vous profilez les demandes Silverlight ... dans un scénario inter-domaines, elles appellent toujours le fichier clientaccesspolicy.xml. Vous ne pouvez pas modifier ce comportement (interne à l'environnement d'exécution Silverlight). De plus, s'il ne trouve pas le fichier clientaccessolicy.xml, il appelle l'équivélant Flash/Flex (crossdomain.xml). Si les deux n'existent pas ou n'autoriseront pas les demandes de ce domaine, vos demandes échoueront tout simplement.

J'ai écrit un article sur l'utilisation de HttpHandlers afin de ne pas avoir à placer ces fichiers XML sur votre serveur web local et vous pouvez les rendre dynamiques. L'article se trouve ici:

http://silverlighthack.com/post/2008/11/08/Silverlight-clientaccesspolicyxml-files-for-the-Enterprise-(Part-1-of-2).aspx