2

我想从 Silverlight 访问内部 REST API,但事实证明我不允许使用 POST 或 DELETE 作为我的请求的 HTTP 方法。

这样做总是会导致SecurityException.

将 REST API 与 Silverlight 一起使用的推荐方法是什么?

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 回答