Flash 闪存套接字策略-提供策略,但客户端中止到套接字的连接
我在2400端口设置了一个服务。当我从Flash本身运行Flash客户端时,它运行良好,因为它绕过了安全策略 当我试图通过在桌面上运行SWF或通过浏览器进行连接时,我看到以下exchange: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
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
有人知道了吗?我知道了。在策略文件结束后发送空字符\0 下面是我将如何去做(用C#写给StreamWriter)
确保客户端的超时设置为毫秒,而不是秒。我这样做了。您可以看到空字节(00)在十六进制转储结束时。在策略调试器日志中找到:确定:策略文件已接受:xmlsocket://:843确定:请求者从xmlsocket://:2400请求资源file:///C|/.swf是允许的,因为xmlsocket://:843处的策略文件存在一个有趣的错误,当客户端套接字超时过低时,Flash会呈现一个策略错误。
mwriter.WriteLine(XMLString+"\0");