Silverlight跨域访问安全性问题

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情


也谈我如何解决Silverlight跨域访问安全性问题

时间:2011-09-25 07:46 来源:博客园 作者:刺客之家 点击:504次
一、问题 Silverlight在访问WebService的时候,是需要在被访问的服务部署目录下检测到跨域访问安全策略文件的。因此在很多silverlight应用使用第三方服务的时候,就受到了很多限制。那么如果服务提供者不提供策略文件,我们怎么做才能在应用中使用这些服务?我通常采用下面的方法解决。 二、思路 跨域访问安全性问题,在于S
  

  一、问题

  Silverlight在访问WebService的时候,是需要在被访问的服务部署目录下检测到“跨域访问安全策略文件”的。因此在很多silverlight应用使用第三方服务的时候,就受到了很多限制。那么如果服务提供者不提供策略文件,我们怎么做才能在应用中使用这些服务?我通常采用下面的方法解决。

  二、思路

  跨域访问安全性问题,在于Silverlight自身做的限制,如果SL应用访问一个和自己在一个Domain的WebService的话,是不会发生这类问题的。那么很自然的想到,为什么不能在本地建立一个WebService,然后使用这个服务作为代理,去访问第三方服务。不就可以绕过这个安全限制了吗?

  三、动手

  Step1:建立本地代理服务

  具体步骤就不多说了,无非是添加新的WebService文件,添加Web引用,生成代理类,然后定义方法,把第三方的服务封装一下。我使用的是一个天气预报服务,endpoint地址:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx

  下面是服务的部分代码:

/// <summary>
    /// Summary description for WeatherWebService
    /// </summary>
   [WebService(Namespace =  "http://tempuri.org/")]
   [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
   [System.ComponentModel.ToolboxItem( false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public  class WeatherWebService : System.Web.Services.WebService
   {

        /// <summary>
        /// 获取第三方ws支持的指定省份下的城市名称
        /// </summary>
        /// <param name="provinceName"></param>
        /// <returns></returns>
       [WebMethod]
        public  string[] GetSupportCity( string provinceName)
       {
           var service =  new WS.WeatherWebServiceSoapClient();
            return service.getSupportCity(provinceName);
       }
   }

  Step2:在SL项目中引用本地服务

  直接添加本地的WebService引用,然后在程序中调用,下面是部分代码:

private  void button1_Click( object sender, RoutedEventArgs e)
       {
           var service =  new LocalServiceReference.WeatherWebServiceSoapClient();
           service.GetSupportCityCompleted+= new EventHandler<GetSupportCityCompletedEventArgs>(service_GetSupportCityCompleted);
           service.GetSupportCityAsync( "安徽");
       }

        void service_GetSupportCityCompleted( object sender, GetSupportCityCompletedEventArgs e)
       {
            this.ListContent.ItemsSource = e.Result;
       }

  Step3:查看结果

  先看直接访问第三方服务的截图:

  

 

  这是使用本地服务作为中介的结果:

  

 

  四、总结

  其实很简单的道理,但是很好的解决了我的问题,不知道大家有没有更好的办法,欢迎拍砖~

源码下载

  本文来自刺客之家的博客,原文地址:http://www.cnblogs.com/wbpmrck/archive/2011/09/23/2186729.html

解决SilverLight访问问题 立即下载

相关推荐

关于Silverlight访问问题

  Silverlight5 访问安全错误解决方法 在silverlight项目中需要用WebClient 访问其他网站的资源,也就是访问问题,出现了安全错误: e.Error = {System.Security.SecurityException ---> System.Security.SecurityException: 安全性错误。 上网百度,知道基

wheroy的专栏 895

SilverLight访问及其常用的几种解决方法

今天在做silverlight访问JSon数据的时候老是出现错误,才发现是问题,因此将这方面的内容整理一些,列了出来 SilverLight 出于对安全性的考虑默认情况下对URL的访问进行了严格的限制,只允许访问同一子下的URL资源。 下表列出了Silverlight 2.0 中 URL 访问规则: WebCl...

weixin_30508241的博客 164

什么是,如何解决问题

问题产生的根本原因是浏览器的同源策略(Same-Origin Policy)。同源策略是浏览器实现的一种安全协议,它限制了一个源的文档或脚本如何与另一个源的资源进行交互。如果没有同源策略,恶意网页可能会读取另一个网页的敏感信息,如用户输入的密码、银行账号等,从而进行非法操作。

weixin_55862073的博客 5836

Silverlight访问以及安全策略

访问的解决:   一:在根目录下添加crossdomain.xml文件,并对该文件进行设置   二:在本地建立一个WebService,然后使用这个服务作为代理,去访问第三方服务(这个还有待验证)

chenyuncysc的专栏 484

如何解决Silverlight访问安全性问题

一、问题 Silverlight访问WebService的时候,是需要在被访问的服务部署目录下检测到“访问安全策略文件”的。因此在很多silverlight应用使用第三方服务的时候,就受到了很多限制。那么如果服务提供者提供策略文件,我们怎么做才能在应用中使用这些服务?我通常采用下面的方法解决。 二、思路 访问安全性问题,在于Silverlight自身做的限制,如果SL应用访问一个...

weixin_30293135的博客 126

silverlight MVC System.Security.SecurityException: 安全性错误。

我在SL客户端,通过RestSharp访问了MVC。 var client = new RestClient("http://localhost:13333/Test"); var rest = new RestRequest(Method.GET); client.ExecuteAsync(rest, (response) => { string re = re...

weixin_30949361的博客 142

URL资源访问 使用session信息

SilverLight 出于对安全性的考虑默认情况下对URL的访问进行了严格的限制,只允许访问同一子下的URL资源。下表列出了Silverlight 2.0 中 URL 访问规则: WebClient对象 Media、images、ASX XAML 文件、Font 文件 流媒体 允许的协议 HTTP, HTTPS HTTP, HTTPS, FILE ...

weixin_30950607的博客 96

Silverlight使用HttpWebRequest和HttpWebResponse时发生System.Security.SecurityException: 安全性错误

最近项目需要,研究Silverlight 从阿里云下载数据,遇到一些问题

不积跬步,无以至千里;不积小流,无以成江海 2501

Silverlight点滴(四)Silverlight访问Web Service报"System.Security.SecurityException: 安全性错误"的处理...

好几次了,执行的好好的Silverlight项目调用Web Service时报"System.Security.SecurityException: 安全性错误",如下图所示: 因为这几天只是学习、测试Silverlight的功能,并没有作什么正式的项目,所以每次看到这个就直接重新建一个工程,今天真的耐烦了,上网找了下原因,大概是Silverlight访问的权限问题,需要在Silver...

weixin_30478923的博客 155

silverlight 访问 WCF 出现安全性错误的解决办法

  最近在工作中使用Silverlight访问WCF报如下错误:System.Security.SecurityException: 安全性错误。经过资料查询,必须要在服务器端添加策略。   由于我使用的服务宿主程序为应用程序,所以将策略以文件流的形式承载在内存中。 来看策略服务代码: using System.IO; using System.Reflection;...

weixin_30951231的博客 167

silverlight + silverlight-enable wcf 问题

我作了一个上传系统,系统结构是方案中有三个项目:silverlight、sliverlight.web和wcf 1、安全性问题:即访问问题 2、"远程服务器返回了错误: NotFound。"在本系统中,我把上传的文件放在系统目录下的一个“Upload“目录里,当时我把“Upload”目录建在了web项目中,后来又把“Upload”建在wcf项目上,就解决了此问题

yanli0823的专栏 908

silverlight cross domain 访问策略配置文件

                                                                                                         访问限制主要为了解决以下安全性问题。 假设 用户A访问了 站点B,并在自己的机器上保存了用户凭证(放在cookie里)。  当用户A访问站点C(这是一个恶意站点), 站点

草莽的专栏 3402

关于AJAX调用ASP.NET MVC或者WebAPI服务的问题及解决方案

 作者:陈希章 时间:2014-7-3 问题描述 当(cross domain)调用ASP.NET MVC或者ASP.NET Web API编写的服务时,会发生无法访问的情况。 重现方式 使用模板创建一个最简单的ASP.NET Web API项目,调试起来确认能正常工作 创建另外一个项目,仅仅包含一个HTML页面,发起AJAX的调用 在浏览器中打开这...

weixin_34318272的博客 194

[ Silverlight]crossdomain.xml 解决 Silverlight 访问问题

     为了安全原因考虑,同flash一样,Silverlight访问也做了严格的限制。要解决这个问题,可以参考帮助中的说明,将两个xml文件保存在网站根目录,比如C:/Inetpub/wwwroot中即可(其实保存其中一个就可以了     在 Silverlight 使用 WebService 、WCF、WebRequest 等进行数据通讯的时候,需经常需要面对访问问题。S

good_Alex55的专栏 2478

同源策略和访问

# Same Origin Policy Summary #     目前Restful的Web Service比较流行,项目中也经常用到。实现过程中遇到Ajax的问题,在此对相关知识做个总结。 ## 1. 什么是同源策略 ##     理解首先必须要了解同源策略。同源策略是浏览器上为安全性考虑实施的非常重要的安全策略。     何谓同源:         URL由协议、

qgw_2000的专栏 3876
上一篇: 关于Silverlight的跨域访问问题
下一篇: win10如何解决网络正常,打不开网页
飞鹰祭司
博客等级 码龄22年 1粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值