gpt4 book ai didi

apache-flex - Flex Crossdomain.xml文件和FTP

转载 作者:行者123 更新时间:2023-12-03 12:01:41 24 4
gpt4 key购买 nike

如何将跨域与ftp一起使用?

我正在尝试对Flex中的FTP进行“hello world”级别的测试,但是三天来,我无法克服有关如何强制Flex接受我的跨域策略的问题-即使出于测试目的。
这是我的代码:确切的错误文本如下。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" initialize="onInitialize()" layout="vertical">

<mx:Script>
<![CDATA[
import mx.utils.*;
import mx.controls.Alert;
private var fileRef:FileReference;
private var fileSize:uint;
private var fileContents:ByteArray;
//you need to initiate two scokets one for sending
//commands and second for sending data to FTP Server
//socket for sending commands to FTP
private var s:Socket
//responce from FTP
private var ftpResponce:String;
//socket for sending Data to FTP
private var dataChannelSocket:Socket;
//responce from FTP when sending Data to FTP
private var dataResponce:String;
//will hold the IP address of new socket created by FTP
private var dataChannelIP:String;
//will hold the Port number created by FTP
private var dataChannelPort:int;
private var user:String="I have the right user"; //FTP usernae
private var pass:String="the pw is correct"; //FTP Password

private function receiveReply(e:ProgressEvent):void {
ftpResponce=s.readUTFBytes(s.bytesAvailable)
var serverResponse:Number=Number(ftpResponce.substr(0, 3));
if (ftpResponce.indexOf('227') > -1) {
//get the ip from the string response
var temp:Object=ftpResponce.substring(ftpResponce.indexOf("(") + 1
, ftpResponce.indexOf(")"));
var dataChannelSocket_temp:Object=temp.split(",");
dataChannelIP=dataChannelSocket_temp.slice(0, 4).join(".");
dataChannelPort=parseInt(dataChannelSocket_temp[4]) * 256 +
int(dataChannelSocket_temp[5]);
//create new Data Socket based on dataChannelSocket and dataChannelSocket port
dataChannelSocket=new Socket(dataChannelIP, dataChannelPort);
dataChannelSocket.addEventListener(ProgressEvent.SOCKET_DATA, receiveData);
}
//few FTP Responce Codes
switch (String(serverResponse)) {
case "220":
//FTP Server ready responce
break;
case "331":
//User name okay, need password
break;
case "230":
//User logged in
break;
case "250":
//CWD command successful
break;
case "227":
//Entering Passive Mode (h1,h2,h3,h4,p1,p2).
break;
default:
}
//for more please
//http://http://www.altools.com/image/support/alftp/ALFTP_35_help/
//FTP_response_codes_rfc_959_messages.htm
traceData(ftpResponce);
}

private function receiveData(e:ProgressEvent):void {
dataResponce=dataChannelSocket.readUTFBytes(
dataChannelSocket.bytesAvailable);
traceData("dataChannelSocket_response—>" + dataResponce);
}

private function showError(e:IOErrorEvent):void {
traceData("Error—>" + e.text);
}

private function showSecError(e:SecurityErrorEvent):void {
traceData("SecurityError–>" + e.text);
}

private function onInitialize():void {
Security.loadPolicyFile("http://www.myUrlIsCorrectInMyProgram.com/crossdomain.xml");
}

private function createRemoteFile(fileName:String):void {
if (fileName != null && fileName != "") {
s.writeUTFBytes("STOR " + fileName + "\n");
s.flush();
}
}

private function sendData():void {
fileContents=fileRef.data as ByteArray;
fileSize=fileRef.size;
dataChannelSocket.writeBytes(fileContents, 0, fileSize);
dataChannelSocket.flush();
}

//initialize when application load
private function upLoad():void {
fileRef=new FileReference();
//some eventlistener
fileRef.addEventListener(Event.SELECT, selectEvent);
fileRef.addEventListener(Event.OPEN, onFileOpen);
//this function connects to the ftp server
connect();
//send the usernae and password
this.userName(user);
this.passWord(pass);
//if you want to change the directory for upload file
this.changeDirectory("/test/"); //directory name
//enter into PASSV Mode
s.writeUTFBytes("PASV\n");
s.flush();
}

private function onFileOpen(event:Event):void {
}

private function traceData(event:Object):void {
var tmp:String="================================\n";
ta.text+=event.toString() + "\n";
ta.verticalScrollPosition+=20;
}

private function ioErrorEvent(event:IOErrorEvent):void {
Alert.show("IOError:" + event.text);
}

private function selectEvent(event:Event):void {
btn_upload.enabled=true;
filename.text=fileRef.name;
fileRef.load();
}

private function uploadFile():void {
createRemoteFile(fileRef.name);
sendData();
}

private function connect():void {
s=new Socket("ftp.myUrlIsCorrectInMyProgram.com", 21);
s.addEventListener(ProgressEvent.SOCKET_DATA, receiveReply);
s.addEventListener(IOErrorEvent.IO_ERROR, showError);
s.addEventListener(SecurityErrorEvent.SECURITY_ERROR, showSecError);
s.addEventListener(Event.CONNECT, onSocketConnect);
s.addEventListener(Event.CLOSE, onSocketClose);
s.addEventListener(Event.ACTIVATE, onSocketAtivate);
}

private function onSocketConnect(evt:Event):void {
//traceData("OnSocketConnect–>"+evt.target.toString());
}

private function onSocketClose(evt:Event):void {
//traceData("onSocketClose–>"+evt.target.toString());
}

private function onSocketAtivate(evt:Event):void {
//traceData("onSocketAtivate–>"+evt.target.toString());
}

private function userName(str:String):void {
sendCommand("USER " + str);
}

private function passWord(str:String):void {
sendCommand("PASS " + str);
}

private function changeDirectory(str:String):void {
sendCommand("CWD " + str);
}

private function sendCommand(arg:String):void {
arg+="\n";
s.writeUTFBytes(arg);
s.flush();
}
]]>
























[SWF]/FTP-debug/FTP.swf-解压缩后739,099字节
警告:域www.myUrlIsCorrectInMyProgram.com未指定元策略。应用默认的元策略“仅主”。不建议使用此配置。请参见 http://www.adobe.com/go/strict_policy_files来解决此问题。

警告:WAITING套接字策略文件时,xmlsocket://ftp.myUrlIsCorrectInMyProgram.com:843上的超时(3秒)。这应该不会引起任何问题,但是请参阅 http://www.adobe.com/go/strict_policy_files以获得解释。

警告:[严格]由于语法错误,将忽略xmlsocket://ftp.myUrlIsCorrectInMyProgram.com:21上的策略文件。请参见 http://www.adobe.com/go/strict_policy_files来解决此问题。

*违反安全沙箱*
到ftp.myUrlIsCorrectInMyProgram.com的连接:21暂停- http://localhost/FTP-debug/FTP.swf不允许
错误:由于缺少策略文件权限,来自 http://localhost/FTP-debug/FTP.swf的请求者在xmlsocket://ftp.myUrlIsCorrectInMyProgram.com:21上请求资源被拒绝。

上面列出的URL上的“信息”对我来说绝对是无法理解的。

拜托,有人帮忙!

最佳答案

请参阅跨域规范:

http://learn.adobe.com/wiki/download/attachments/64389123/CrossDomain_PolicyFile_Specification.pdf?version=1

这涵盖了您所拥有的警告,并且可以帮助您解决此问题。

关于apache-flex - Flex Crossdomain.xml文件和FTP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2285645/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com