Silverlight:System.Net.WebClientでcrossdomain.xmlを(存在しない)無視する方法は?
-
10-07-2019 - |
質問
System.Net.WebClient
を使用してHTTP要求を行うとセキュリティ例外が発生します。これは、 crossdomain.xml
または clientaccesspolicy.xmlターゲットサーバー上の
が見つからないか、制限が厳しすぎます。これには正当な理由(Cookieとクロスサイトリクエストフォージェリ)があることは知っていますが、必要なのは Cookieや派手なものを使用せずに任意のURLに対して単純なHTTP GETリクエストを行うだけなので、 / strong>。
URLを取得するプロキシのアイデアは既に考えていましたが、帯域幅の浪費は言うまでもなく、moreい回避策のように聞こえます。
Silverlightでそれを行う方法(ある場合)は何ですか?適切なクラスを使用していますか
解決
少なくともWebClientでは、それは実際には不可能だと思います。 全体的な考えは、クライアントを他のサーバーへの不要なリクエストから制限(保護...)することです。
これを回避するには、「任意のURL」を呼び出すプロキシWebサービスを使用します。 Webサーバーから取得し、結果をSilverlightクライアントに返します。こうすることで、必要な機能を実現している間、クライアントは保護されたままになります。
他のヒント
なぜそれを取り除きたいのですか?
クロスドメインシナリオでSilverlightリクエストをプロファイルする場合、常にclientaccesspolicy.xmlファイルを呼び出します。この動作を変更することはできません(Silverlightランタイムの内部)。さらに、clientaccessolicy.xmlファイルが見つからない場合、Flash / Flex equivelant(crossdomain.xml)を呼び出します。両方が存在しないか、そのドメインからのリクエストを許可しない場合、リクエストは単に失敗します。
これらのXMLファイルをローカルWebサーバーに配置する必要がないように、HttpHandlerの使用に関する記事を書いたので、動的にすることができます。この記事は次の場所にあります。