Silverlight から内部 REST API にアクセスしたかったのですが、リクエストの HTTP メソッドとして POST または DELETE を使用することが許可されていないことがわかりました。
そうすることで、常にSecurityException.
Silverlight で REST API を使用するための推奨される方法は何ですか?
Silverlight から内部 REST API にアクセスしたかったのですが、リクエストの HTTP メソッドとして POST または DELETE を使用することが許可されていないことがわかりました。
そうすることで、常にSecurityException.
Silverlight で REST API を使用するための推奨される方法は何ですか?
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 ファイルに配置する必要があります。
私が思いついた別の解決策はRestSharp、X-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;
}