Nat*_*ate 5 silverlight service web-services cross-domain
我有一个silverlight应用程序(托管在intranet.mydomain.net)和一个WCF服务(webservices.mydomain.net)
我是否需要跨站点策略文件?如果是这样,只允许从intranet.mydomain.net访问它会是什么样子?
您可能希望查看以下有关Tim Heuer的"如何使用Silverlight的跨域策略文件 "的链接.
http://silverlight.net/learn/videos/all/how-to-use-cross-domain-policy-files-with-silverlight/
以下是Tim Heuer博客的另一页,您可以阅读其中的示例:
我会考虑使用您的silverlight应用程序编写自己的WCF服务,并处理对外部WCF服务的请求.这样您就不会打开任何东西,只允许与受控服务进行通信(尽管您提到的服务可能在您的控制之下).
当其他服务不在您的手中并且可能经常更改时,此方法也很有用.您可以通过自己的服务控制如何处理它,并且永远不需要更新您的silverlight控件(假设更改不是很激烈).
是的,您的服务域 (webservices.mydomain.net) 的根目录中需要有一个 clientaccesspolicy.xml 文件。
默认情况下,Silverlight 支持对同一域或源站点上的 Web 服务的调用。相同域意味着呼叫必须使用相同的子域、协议和端口。这是出于安全原因并防止跨域伪造。
这是一个示例文件:
<?xml version="1.0" encoding="utf-8" ?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="*">
<domain uri="http://intranet.mydomain.net"/>
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
Run Code Online (Sandbox Code Playgroud)
这将仅允许来自 Intranet.mydomain.net 的请求。
编辑
有人问:如果我有两个 WCF 服务,这将如何工作?/ServiceA/a.svc 和 /ServiceB/b.svc,我希望 ServiceA 对任何地方的任何人开放,而 ServiceB 只能在我的 Intranet 上工作?
您的策略文件将如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="*">
<domain uri="http://*"/>
</allow-from>
<grant-to>
<resource path="/ServiceA/" include-subpaths="true"/>
</grant-to>
</policy>
<policy>
<allow-from http-request-headers="*">
<domain uri="http://intranet.mydomain.net"/>
</allow-from>
<grant-to>
<resource path="/ServiceB/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4722 次 |
最近记录: |