Silverlight: Como ignorar (ausência de) crossdomain.xml com System.Net.WebClient?
-
10-07-2019 - |
Pergunta
Eu recebo exceção de segurança quando se utiliza System.Net.WebClient
para fazer solicitações HTTP, que é devido ao fato de que crossdomain.xml
ou clientaccesspolicy.xml
no servidor de destino estão ausentes ou são muito restritivas. Eu sei que há uma boa razão para isso (cookies e cross-site request forgery), mas ela não se aplica no meu caso uma vez que todos necessidade I está fazendo simples solicitações HTTP GET para URLs arbitrárias sem o uso de cookies ou fantasia nada .
Já pensou em uma idéia de um proxy que vai buscar os URLs, mas que soa mais como uma solução alternativa feio, para não mencionar o desperdício de largura de banda.
O que é a maneira (se houver) para fazê-lo em Silverlight? Estou usando a classe certa?
Solução
Eu acho que isso não é realmente possível, pelo menos com WebClient. A idéia é restringir (proteger ...) os clientes de pedidos indesejados para outros servidores.
Para contornar isso, o que você pode fazer é ter um webservice proxy que vai chamar as "URLs arbitrárias" do seu servidor web, e passar os resultados de volta para o cliente Silverlight. Dessa forma, os clientes ficar protegido quando você atingir a funcionalidade desejada.
Outras dicas
Por que você quer se livrar dele?
Se você perfil solicitações Silverlight ... em um cenário de domínio cruzado eles sempre chamar o arquivo clientaccesspolicy. Você não pode alterar esse comportamento (interno ao tempo de execução Silverlight). Além disso, se ele não encontrar o arquivo clientaccessolicy.xml suas chamadas a equivelant Flash / Flex (crossdomain.xml). Se ambos não existem ou não vai permitir que os pedidos desse domínio, os seus pedidos simplesmente falhará.
Eu escrevi um artigo sobre o uso HttpHandlers, a fim de não ter de colocar os arquivos XML no seu servidor web local e você pode torná-los dinâmico. O artigo está localizada aqui: