• 跨域WEB Service 调用(摘自ASP.NET高级编程第三版)


    调用另外一个站点允许的话应该有一个策略文件明确的相互允许。

    如果把WEBSERVICE和 ASP.NET整合到一个项目中。这个策略文件不使用和可以。按道理说为了更好的扩展性,应该写出策略文件,但是他的作用是(什么域被允许访问你的WEB服务器。)所以使用时最好考虑好项目中ASP.NET文件系统的安全性。

    1.创建名为clientaccesspolicy.xml文件,并把它放在网站根目录下。(注:此文件一般使用在Silverlight调用时。)

    Silverlight允许你没有任何限制的从一个WEB服务上调用另一个位于同一个WEB站点的WEB服务,

    如果要调用位于另外一个WEB站点的WEB服务。则必须要有一个策略文件。

         clientaccesspolicy.xml文件声明了什么域被允许访问你的WEB服务器。

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

     

    允许任意访问。可以进行任意的HTTP请求,包括“下载WEB页面” 所以要注意,如果WEBService的项目单独放置,安全性比较高。如果WEBservice和ASP.NET WEB程序放在一起,这个策略文件最好不要添加。以防其他的权限出现漏洞。

    注:此文件一般使用在Silverlight调用时。

    因为,winform和服务端应用程序---无论创建什么样的策略文件,它们都能够做一个普通用户可以做的事情,这意味着他们能够下载所有公开内容。

    另外,你可以在特定的域中限制访问在WEB页面上运行的Silverlight应用程序。;

    比如我的webservice目录叫做WSProject,引用地址是http://localhost/WSProject/webservice.asmx,

    那么silverlight不是在http://localhost/WSProject这个目录下找crossdomain.xml和clientaccesspolicy.xml,而是在http://localhost/下找这两个文件.

     

     

    所以假如你的IIS默认目录是C:\inetpub\wwwroot的话,服务文件是部署在C:\inetpub\wwwroot\WSProject下,那么crossdomain.xml和clientaccesspolicy.xml这样的文件一定要放在C:\inetpub\wwwroot而不是http://localhost/WSProject.

     

      另外更多的时候,对于初学者做相关教程的时候,按照教程里的步骤,最后点VS2008里运行的时候,通常是把silverlight程序作为启动项目.我在做到这里的时候就遇到了本文所涉及到的问题.我发现这个时候在项目里添加crossdomain.xml或clientaccesspolicy.xml是无济于事的.VS的小型服务器会给你提供这样的测试环境,http://localhost:端口号/项目名/网页名,如前所述是注定找不到这两个文件的,所以,还是把服务文件先部署到IIS上然后再测试吧.

      关于silverlight和flash为什么都需要这样的文件,我还不是很理解,不过可能也是类似于asp.net中的fileupload控件指定文件的那个属性为什么只能是只读一样,肯定是有它的道理的.慢慢去体会了.

    本人声明: 个人主页:沐海(http://www.cnblogs.com/mahaisong) 以上文章都是经过本人设计实践和阅读其他文档得出。如果需要探讨或指教可以留言或加我QQ!欢迎交流!
  • 相关阅读:
    【微积分】 02
    【微积分】 01
    【线性代数】 09
    云南国庆八日游策划书
    Kubectl工具常用命令
    Linux 常用命令缩写及对应的
    kubectl工具的windows安装方法
    Intellij IDEA工具的常用快捷键
    如何理解docker镜像build中的上下文
    【转】在服务器上排除问题的头五分钟&常用命令
  • 原文地址:https://www.cnblogs.com/mahaisong/p/2208259.html
Copyright © 2020-2023  润新知