我正在尝试创建一个简单的端口扫描程序来检查特定端口是否已打开。
为了实现这一点,我试图创建一个简单的AS3套接字连接到这些端口。如果连接成功 - 端口打开,否则端口关闭。这是代码片段:
_socket=new Socket();
_socket.addEventListener(Event.CONNECT, socketConnectHandler);
_socket.addEventListener(IOErrorEvent.IO_ERROR, socketIoErrorHandler);
_socket.connect("142.204.133.83", 1935);
当我在localhost上测试它时,这很有效,但是当我将我的应用程序移动到服务器时,我开始得到:
错误#2044:未处理的securityError:。 text =错误#2048:安全性 沙箱违规:http:// 142.204.133.83 /client/bin-debug/BBBClientCheck.swf无法从http://加载数据 142.204.133.83:1935。
在做了一些研究之后,我发现在我的服务器根目录中,我需要有crossdomain.xml来为客户端访问端口提供访问权限。这是我正在使用的示例xml:
<!DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*" to-ports="*" secure="false"/>
</cross-domain-policy>
使用此文件的方法很少:
1)从客户端显式加载文件:
Security.allowDomain("*");
Security.loadPolicyFile("XMLSocket://142.204.133.83:843/crossdomain.xml");
2)监听端口843并在客户端请求时提供此文件,这是我的nginx配置:
server {
listen 843;
server_name 142.204.133.83;
location / {
rewrite ^(.*)$ /crossdomain.xml;
}
error_page 400 /crossdomain.xml;
location = /crossdomain.xml {
root /var/www/bigbluebutton-default;
}
}
3)创建一个python服务器,它将监听端口843并在clien't请求中提供crossdomain.xml文件。
我尝试了所有这些方法,但我仍然得到相同的错误,
错误#2044:未处理的securityError:。 text =错误#2048。所以它看起来 就像我的crossdomain.xml文件没有任何区别。