实际项目中解决 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的沙箱问题。

祝大家好运!

相关文章

  译序:JWMediaPlayer是开源的网页使用的Flash播放器。本...
    Flash编程原理都是只能将1写为0,而不能将0写成1.所...
 上传setenvgatewayip192.168.1.1;setenvserverip192.168.1...
Error:FlashDownloadFailed-"Cortex-M3"出现一般有...
jPlayer是一个用于控制和播放mp3文件的jQuery插件。它在后台...
#ifndef__FONTUPD_H__#define__FONTUPD_H__#include"sy...