Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash 闪存套接字策略-提供策略,但客户端中止到套接字的连接_Flash_Actionscript 3_Sockets_Actionscript_Cross Domain Policy - Fatal编程技术网

Flash 闪存套接字策略-提供策略,但客户端中止到套接字的连接

Flash 闪存套接字策略-提供策略,但客户端中止到套接字的连接,flash,actionscript-3,sockets,actionscript,cross-domain-policy,Flash,Actionscript 3,Sockets,Actionscript,Cross Domain Policy,我在2400端口设置了一个服务。当我从Flash本身运行Flash客户端时,它运行良好,因为它绕过了安全策略 当我试图通过在桌面上运行SWF或通过浏览器进行连接时,我看到以下exchange: 00000000 3c 70 6f 6c 69 63 79 2d 66 69 6c 65 2d 72 65 71 <policy- file-req 00000010 75 65 73 74 2f 3e 00 uest/>. 00

我在2400端口设置了一个服务。当我从Flash本身运行Flash客户端时,它运行良好,因为它绕过了安全策略

当我试图通过在桌面上运行SWF或通过浏览器进行连接时,我看到以下exchange:

00000000  3c 70 6f 6c 69 63 79 2d  66 69 6c 65 2d 72 65 71 <policy- file-req
00000010  75 65 73 74 2f 3e 00                             uest/>.

00000000  3c 3f 78 6d 6c 20 76 65  72 73 69 6f 6e 3d 22 31 <?xml ve rsion="1
00000010  2e 30 22 3f 3e 3c 21 44  4f 43 54 59 50 45 20 63 .0"?><!D OCTYPE c
00000020  72 6f 73 73 2d 64 6f 6d  61 69 6e 2d 70 6f 6c 69 ross-dom ain-poli
00000030  63 79 20 53 59 53 54 45  4d 20 22 68 74 74 70 3a cy SYSTE M "http:
00000040  2f 2f 77 77 77 2e 61 64  6f 62 65 2e 63 6f 6d 2f //www.ad obe.com/
00000050  78 6d 6c 2f 64 74 64 73  2f 63 72 6f 73 73 2d 64 xml/dtds /cross-d
00000060  6f 6d 61 69 6e 2d 70 6f  6c 69 63 79 2e 64 74 64 omain-po licy.dtd
00000070  22 3e 20 3c 63 72 6f 73  73 2d 64 6f 6d 61 69 6e "> <cros s-domain
00000080  2d 70 6f 6c 69 63 79 3e  20 3c 73 69 74 65 2d 63 -policy>  <site-c
00000090  6f 6e 74 72 6f 6c 20 70  65 72 6d 69 74 74 65 64 ontrol p ermitted
000000A0  2d 63 72 6f 73 73 2d 64  6f 6d 61 69 6e 2d 70 6f -cross-d omain-po
000000B0  6c 69 63 69 65 73 3d 22  6d 61 73 74 65 72 2d 6f licies=" master-o
000000C0  6e 6c 79 22 2f 3e 20 3c  61 6c 6c 6f 77 2d 61 63 nly"/> < allow-ac
000000D0  63 65 73 73 2d 66 72 6f  6d 20 64 6f 6d 61 69 6e cess-fro m domain
000000E0  3d 22 2a 22 20 74 6f 2d  70 6f 72 74 73 3d 22 2a ="*" to- ports="*
000000F0  22 20 2f 3e 3c 2f 63 72  6f 73 73 2d 64 6f 6d 61 " /></cr oss-doma
00000100  69 6e 2d 70 6f 6c 69 63  79 3e 00                in-polic y>.
00000000 3c 70 6f 6c 69 63 79 2d 66 69 6c 65 2d 72 65 71。
00000000 3c 3f 78 6d 6c 20 76 65 72 73 69 6f 6e 3d 22 31<允许ac
000000 D0 63 65 73 2d 66 72 6f 6d 20 64 6f 6d 61 69 6e域访问
000000 E0 3d 22 2a 22 20 74 6f 2d 70 6f 72 74 73 3d 22 2a=“*”到-端口=”*
000000 F0 22 20 2f 3e 3c 2f 63 72 6f 73 2d 64 6f 6d 61“/>。
所以你可以看到我在响应中正确地包含了空终止符

交换策略请求和策略文件后,会发生以下情况:

  • 客户端将SYN发送到服务器端口2400
  • 服务器响应SYN,ACK
  • 客户端发送ACK
  • 客户端发送FIN,ACK
  • 服务器响应ACK
  • 客户端发送RST、ACK
我假设这是客户端连接(步骤1-3),然后中止(步骤4-6)。Flash提供了以下错误:

Error: Error #2048: Security sandbox violation: file:///C|/Projects/rbrnascar/trunk/Development/Websites/flash/SocialMap.swf cannot load data from robpaveza.net:2400. at com.redbull.model::SocialMapModel/onSecurityError() at flash.events::EventDispatcher/dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at flash.net::Socket/onTimeout() at flash.utils::Timer/_timerDispatch() at flash.utils::Timer/tick() 错误:错误#2048:安全沙盒冲突:file:///C|/Projects/rbrnascar/trunk/Development/Websites/flash/SocialMap.swf无法从robpaveza.net:2400加载数据。 在com.redbull.model::SocialMapModel/onSecurityError()上 at flash.events::EventDispatcher/dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() 在flash.net::Socket/onTimeout()上 at flash.utils::Timer/_timerDispatch() at flash.utils::Timer/tick() 我看了以下几页,它们似乎表达了类似的问题,但没有解决方案


有人知道了吗?

我知道了。在策略文件结束后发送空字符\0

下面是我将如何去做(用C#写给StreamWriter)


确保客户端的超时设置为毫秒,而不是秒。

我这样做了。您可以看到空字节(00)在十六进制转储结束时。在策略调试器日志中找到:确定:策略文件已接受:xmlsocket://:843确定:请求者从xmlsocket://:2400请求资源file:///C|/.swf是允许的,因为xmlsocket://:843处的策略文件存在一个有趣的错误,当客户端套接字超时过低时,Flash会呈现一个策略错误。
 mwriter.WriteLine(XMLString+"\0");