Domanda

Ottengo un'eccezione di sicurezza quando utilizzo System.Net.WebClient per eseguire richieste HTTP, a causa del fatto che crossdomain.xml o clientaccesspolicy.xml sul server di destinazione mancano o sono troppo restrittivi. So che c'è una buona ragione per questo (cookie e falsificazione di richieste tra siti), ma non si applica nel mio caso poiché tutto ciò di cui ho bisogno è fare semplici richieste HTTP GET a URL arbitrari senza usare cookie o altro .

Ho già pensato a un'idea di un proxy che recupererà gli URL, ma che suona più come una brutta soluzione, per non parlare dello spreco di larghezza di banda.

Qual è il modo (se ce n'è uno) di farlo in Silverlight? Sto usando la classe giusta?

È stato utile?

Soluzione

Penso che ciò non sia effettivamente possibile, almeno con WebClient. L'idea è di limitare (proteggere ...) i client da richieste indesiderate ad altri server.

Per ovviare a ciò, quello che puoi fare è avere un servizio web proxy che chiamerà gli "URL arbitrari" dal tuo server web e restituisci i risultati al client Silverlight. In questo modo i client rimangono protetti mentre raggiungi le funzionalità che desideri.

Altri suggerimenti

Perché vuoi sbarazzartene?

Se si profilano le richieste Silverlight ... in uno scenario tra domini, chiamano sempre il file clientaccesspolicy.xml. Non è possibile modificare questo comportamento (interno al runtime di Silverlight). Inoltre, se non trova il file clientaccessolicy.xml, chiama l'equivalente Flash / Flex (crossdomain.xml). Se entrambi non esistono o non consentono richieste da quel dominio, le tue richieste falliranno semplicemente.

Ho scritto un articolo sull'uso di HttpHandlers per non dover posizionare quei file XML sul tuo server web locale e puoi renderli dinamici. L'articolo si trova qui:

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top