微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

实际项目中解决 flash 通信中的安全沙箱问题

flash 的socket 编程不就说了,本篇旨再解决沙箱问题。

文本列出 C# PHP nodejs 为服务器端程序时出现的沙箱问题。

何为安全沙箱,请大家在百度谷歌一下!

当服务端和 flex 通信时 ”出现Security错误,Error #2048 。并且在连接时,服务端收到客户端发来的消息<policy-file-request/> 消息。“

解决方案:

服务端收到 <policy-file-request/>消息时,直接向客户端发送一条消息,内容就是配置好策略文件 关闭当前连接

PHPCODE:

private $flashPolicy = '<cross-domain-policy><allow-access-from domain="*" to-ports="8001" /></cross-domain-policy>';

//解决flash安全沙箱问题 if($lines[0] == "<policy-file-request/>\0")       //收到 <policy-file-request/> 时,结尾以\0结束 { $this->server->writeBuffer($this->socket, $this->flashPolicy); //写给客户端 stream_socket_shutdown($this->socket, STREAM_SHUT_RDWR);            //重点。要关闭当前的连接,原因后面说 return false; }


C#

if (0 == strcmp("<policy-file-request/>", szRecvBuff)) { if (strlen(szPolicy) == sockClient.Send(szPolicy, strlen(szPolicy))) { printf_s("# Send policy xml string successful./n"); } else { printf_s("# Error! Send policy xml string Failed./n"); } sockClient.Close(); //***重点在这里*** RemoveClient(m_vsockClients[i--]); continue; }


nodejs

flashPolicy = '<cross-domain-policy><allow-access-from domain="*" to-ports="*" /></cross-domain-policy>';

var _headers = data.split("\r\n"); if ( /<policy-file-request.*>/.exec(_headers[0]) ) { socket.write( options.flashPolicy ); socket.end(); return; }


代码不多说,各有个的风格,步骤如上。

这样就解决了flash的沙箱问题。

祝大家好运!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐