2

Silverlightから内部REST APIにアクセスしたかったのですが、リクエストのHTTPメソッドとしてPOSTまたはDELETEを使用できないことが判明しました。Silverlight:RestSharpを使用したHTTPの削除とPUTメソッド

こうすると、常にSecurityExceptionが返されます。

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

答えて

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ファイルに配置する必要があります。

+0

恐ろしいを使用し、私のAPIクラスで

、 'HTTP-methods'属性については知りませんでした。ありがとう、これは 'X-HTTP-Method-Override'を私にとっては不要にします。 – Timm

0

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

これは、クライアントコードを変更するだけで、サーバーには使用できないclientaccesspolicy.xmlがある場合にも役立ちます。私はこのコード

if (request.Method == Method.PUT || request.Method == Method.DELETE) 
{ 
    request.AddHeader("X-HTTP-Method-Override", request.Method.ToString()); 
    request.Method = Method.POST; 
} 
関連する問題