可遇不可求的Question之flash的socket连接安全策略文件篇
flash的socket连接安全策略文件
最近公司做压力测试的时候,发现了一个问题。flash的socket客户端向服务端请求安全策略文件的时候,服务端负责回发策略文件的端口能连接上,但是没有响应,没有向flash客户端回发任何内容。最终会导致flash客户端加载不到策略文件。
然而,即便是负责回发策略文件的端口恢复正常,能回发策略文件了,flash客户端在不刷新的情况下,仍然无法通过flash的安全机制,和主socket服务端连接。
于是我自己用.net写了个服务端做了比较详尽的测试。
我们的flash客户端原本使用的单一的socket实例,当发现有安全错误以后,会提示客户端重新连接,重连的时候,仍然是调用的原有实例的connect方法。
于是我测试了把客户端改成每次重连的时候,创建新的socket实例。
测试后发现,这样的操作,并不会使flash客户端去重新向提供策略文件服务的端口去做请求。
然后,我做了另外一个测试,当遇到安全错误的时候,重新设置一个新的策略文件对应的端口,看flash是否会像新的端口请求。与此同时,我在服务端做了3个提供安全策略服务的端口。
结果我发现,flash客户端也不会重新向新的端口做任何请求。
翻阅adobe网站关于flash player的buglist,早在一年前,就有人提出了这个问题。
http://bugs.adobe.com/jira/browse/FP-67
不过adobe没有做任何改动。
通过我进一步试验,发现flash客户端在向服务端的安全策略服务提交请求失败以后,会向socket服务的主端口也会去发出一个"<policy-file-request/>\0",并且这个请求是在没有得到安全许可的情况下,每次连接都会发此请求的。
所以只要socket服务的主端口做安全策略的认证,这样就不怕出现,主服务是ok的,但是策略服务出现问题在不刷新浏览器的情况下无法访问主socket服务的问题。
PS:测试还发现一点,一旦flash客户端获得了安全许可,即便我服务端关闭,然后把安全策略服务停掉,再开启服务端,客户端依然能正常连接socket服务端。
可遇不可求的Question之flash的socket连接安全策略文件篇的更多相关文章
- 可遇不可求的Question之导入mysql中文乱码解决方法篇
可遇不可求的Question之导入mysql中文乱码解决方法篇 先 set names utf8;然后 source c:\1.sql ?
- 可遇不可求的Question之MySqlClient的Guid 类型的映射篇
关于 Guid 类型的映射 MySql 没有原生的 Guid 类型,一般使用 binary(16) 或者 char(36) 这两个类型.早期版本的 Connector/Net 将 binary(16) ...
- 可遇不可求的Question之INSERT … ON DUPLICATE KEY UPDATE 语法篇
MySQL 自4.1版以后开始支持INSERT … ON DUPLICATE KEY UPDATE语法,使得原本需要执行3条SQL语句(SELECT,INSERT,UPDATE),缩减为1条语句即可完 ...
- 可遇不可求的Question之MySQL系统变量interactive_timeout 与 wait_timeout 篇
mysql>show variables like '%timeout'; 打印结果如下: +----------------------------+-------+ | Variable_n ...
- 可遇不可求的Question之MySql4.0前版本不支持union与批量SQL提交
批量SQL提交 参考 21.2.6. Connector/NET Connection String Options Reference . Allow Batch true When true, m ...
- 可遇不可求的Question之SQLSERVER触发器不支持多行插入操作篇
描述: 我们经常遇到 insert table_a select * from table_b 这样的语句, 同时在表table_a中根据每一条新增的SQL语句,通过触发器来触发对应的一系列的后续操作 ...
- 可遇不可求的Question之Sqlserver2005文件组的迁移篇
Sqlserver2005 文件组的折腾 问题:由于数据庞大,我在数据库里面使用了分区表,建了很多文件组,一个分区对应一个文件组,一个文件组只有一个文件.我在建分区表的时候,在数据库属性里面“文件”选 ...
- 可遇不可求的Question之Mysql在不重启服务的情况下修改运行时变量篇
比方说在一些实际生产环境中,想改个MYSQL的配置,但是又不想停止服务重起MYSQL,有什么办法呢?使用SET命令可以做到,请看下面几个例子: 1.设置key_buffer_size的大小为10M. ...
- 可遇不可求的Question之error: Failed dependencies: MySQLconflicts 错误篇
error: Failed dependencies: MySQLconflicts 错误提示: error: Failed dependencies: ...
随机推荐
- NetBeans 代码折叠
代码折叠 // <editor-fold> Your code goes here...// </editor-fold> 添加描述 // <editor-fold ...
- 如何配置IIS使其支持APK文件的下载
在管理工具里打开Internet 信息服务(IIS)管理器.然后选择需要配置的网站. 右侧的界面中会显示该网站的所有功能配置,我们选择并点击进入“MIME类型” 在左侧的操作区选择点击“添加”MIME ...
- mysql实用函数
1. group_concat(); 可以将选择的字段列数据,分组以逗号分隔成一串.实用方便.select id,group_concat(distinct name) from ttt group ...
- ajax请求导致status为canceled(无任何回调数据)的原因
1.故障现象 一个普通的ajax请求,请求能够到达controller,也能正常处理业务,但是ajax的回调函数为空,即没有任何状态和数据返回,使用谷歌浏览器查看请求状态如下图: 出现该错误:简单来说 ...
- linux网络日志分析
1.清空日志的技巧 2.访问日志格式分析 3. web日志统计举例
- java学习笔记(三):类和对象
创建对象 构造器 每一个类都有一个构造器. 如果我们不单独为一个类编写构造器那么 Java 的编译器将会给这个类建立一个默认的构造器. 每当一个新的对象被创建,至少一个构造器将会被调用. 构造器的一 ...
- python import hashllb
http://www.cnblogs.com/alex3714/articles/5161349.html 用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224 ...
- ATM取款机数据库设计
创建文件夹 USE master GO EXEC xp_cmdshell 'mkdir d:\bank', NO_OUTPUT 建库 --检验数据库是否存在,如果为真,删除此数据库-- ...
- python小练习1:设计这样一个函数,在桌面的文件夹上创建10个文本,以数字给它们命名。
python小练习1:设计这样一个函数,在桌面的文件夹上创建10个文本,以数字给它们命名. 使用for循环即可实现: for name in range(1,11): desktop_path='C: ...
- Java代码获取spring 容器的bean几种方式
一.目的 写了一个项目,多个module,然后想在A模块中实现固定的config注入,当B模块引用A时候,能够直接填写相对应的配置信息就行了.但是遇到一个问题,B引用A时候,A的配置信息总是填充不了, ...