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.)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?