zoukankan      html  css  js  c++  java
  • sl跨域访问学习笔记

    需要跨域访问安全策略文件,

    控制System.Net命名空间下的类对其他域的访问。

    sl4 可以浏览器外运行,即 Out-Of-Browser

    此时程序运行在一个沙盒中,没有安全策略的限制。

    sl5可以在浏览器内提升信任

    sl3和sl4 使用.net类库核心版本号是v2

    sl5类库核心版本是v4

    sl支持两种类型的策略文件:flash策略文件和silverlight策略文件

    flash策略文件名为:crossdomain.xml

    silverlght策略文件名为:clientaccesspolicy.xml

    两种访问设计到跨域访问:

    1、WebClient和System.Net命名空间下的Http;

    2、System.Net.Sockets命名空间下的套接字访问

    假如从webclient或http发起的访问,sl客户端运行时会使用http协议从目标域首先尝试下载sl策略文件,如果未找到该文件或该文件错误,则尝试下载flash策略文件。

    如果http协议访问该文件时被拒绝,则抛出SecurityException异常。

    如果sl策略文件有效,则会被用于该应用程序会话期内的后续访问。

    如果是flash策略文件,即crossdomain.xml,需要允许所有域。即我们看到的

    <cross-domain-policy>  
    <allow-access-from domain="*" />  
    <allow-http-request-headers-from domain="*" headers="*" />  
    </cross-domain-policy>

    假如是 Sockets发起的访问,sl3运行时会通过943端口的tcp协议,去下载sl策略文件。

    从sl4开始,使用http的80端口去下载策略文件。原因是,防火墙默认拒绝943端口。

    使用那种协议下载策略文件,可以设置:

    application should set the

    SocketAsyncEventArgs.SocketClientAccessPolicyProtocol

    property to Http(TCP) on the

    System.Net.Sockets.SocketAsyncEventArgs instance

    passed to the Socket.ConnectAsync method.

    如果返回了策略文件,即使解析时发生错误,后面的跨域请求也不会重新下载。(msdn的原文意思是说,错误的策略文件将用于后续跨域请求)

    使用Sockets发起的访问,增加了一种限制,即允许的跨域目标端口 必须在 4502-4534这个范围内,否则访问会失败。

    部署tcp跨域访问的sl3时需要注意,系统管理员需要配置防火墙, 允许tcp的943端口访问sl策略文件。并且要配置允许的ip。

    sl4要配置tcp943或者http80,以及允许的IP。

    sl策略文件(即clientaccesspolicy.xml)必须放在允许的ip和端口映射的物理路径的根目录下。

    sl4及以后版本,允许浏览器外运行来提升信任。只针对webclient和http提升信任;

    sl4可以从http安装应用,并通过https跨域访问媒体文件。

    sl4以及以后版本,信任的应用程序,通过sockets的 UdpAnySourceMulticastClient和 UdpSingleSourceMulticastClient发起的访问,不需要策略文件,

    tcp连接也不需要策略文件,没有端口限制。

    信任的sl4可以通过UdpAnySourceMulticastClient和 UdpSingleSourceMulticastClient类加入没有策略文件的端口大于等于1024的广播组。(原文是:able to join any multicast group on any port greater than or equal to 1024 without the need for a policy responder to authorize the connection.)

  • 相关阅读:
    (初学者)安装hadoop集群注意事项
    配置HADOOP_HOME
    修改用户所在组,修改文件的所有者,明明是自己的文件什么不能解压?
    方法被阻塞,一直要等到线程任务返回结果的例子
    Python复习笔记(一)高级变量类型
    我的vim插件配置
    vim使用笔记
    Linux命令(九)查找文件find
    Linux命令(八)Linux系统信息相关命令
    Linux命令(七)Linux用户管理和修改文件权限
  • 原文地址:https://www.cnblogs.com/langu/p/2984516.html
Copyright © 2011-2022 走看看