2

Silverlight から内部 REST API にアクセスしたかったのですが、リクエストの HTTP メソッドとして POST または DELETE を使用することが許可されていないことがわかりました。

そうすることで、常にSecurityException.

Silverlight で REST API を使用するための推奨される方法は何ですか?

4

2 に答える 2

2

SecurityException はおそらく、API に適切な clientaccesspolicy.xml ファイルが配置されていないことを意味します。すべての HTTP メソッドとヘッダーを許可する非常に寛大な例を次に示します。これを API に使用することに成功しました (これは人気がありますが、Silverlight からどれだけのトラフィックが得られるかはわかりません)。

<?xml version="1.0" encoding="utf-8" ?>
<access-policy>
  <cross-domain-access>
    <policy>
      <allow-from http-request-headers="*" http-methods="*">
        <domain uri="http://*" />
        <domain uri="https://*" />
      </allow-from>
      <grant-to>
        <resource path="/" include-subpaths="true" />
      </grant-to>
    </policy>
  </cross-domain-access>
</access-policy>

これは、使用しようとしている API が存在するドメインのルートにある clientaccesspolicy.xml ファイルに配置する必要があります。

于 2012-03-08T17:31:46.183 に答える
0

私が思いついた別の解決策はRestSharpX-HTTP-Method-Overrideヘッダーに設定して、POST リクエストを送信することです。

これは、クライアント コードを変更するだけでよいが、サーバーに使用できないclientaccesspolicy.xml.

私のAPIクラスでは、このコードを使用します

if (request.Method == Method.PUT || request.Method == Method.DELETE)
{
    request.AddHeader("X-HTTP-Method-Override", request.Method.ToString());
    request.Method = Method.POST;
}
于 2012-03-09T08:34:21.417 に答える