Flash Security Error: securitySandboxError

Flash Security Error: securitySandboxError
2012-12-27T18:49:01+01:00
2012-12-28T19:21:17+01:00
2022-11-27T19:10:41+01:00
Maxel
Szép estét Fórumozók!
Az alábbi problémával kapcsolatban kérném szíves segítségeteket.
Volt egy régebben fejlesztett több fájl feltöltésére alkalmas flash modulom. A modul néhány héttel ezelőttig minden hiba nélkül tökéletesen működött. A feltöltést a FileReference upload metódussal valósúlt meg.
Néhány hete azonban a szerver oldali php fájl meghívása során az alábbi hibát kapom vissza:

Security Error: securitySandboxError

Utána olvastam már számtalan helyen, de sajnos nem tudtam rájönni a problémára.

SWF fájl action script:
import flash.net.FileReference;
var progressBar:MovieClip;
var reference:FileReference = new FileReference();
var referenceListener:Object = {};

System.security.allowDomain("127.0.0.1");
Security.loadPolicyFile('crossdomain.xml');


var scriptLocation:String = '127.0.0.1:8700/up/uploader.php';
var progressBarHeight:Number = 10;
var progressBarY:Number = 50;
var progressBarColor:Number = 0x66ccff;
uploadButton_mc._visible = false;
reference.addListener(referenceListener);
referenceListener.onSelect = activateUploadButton;
referenceListener.onProgress = updateProgress;
referenceListener.onComplete = restart;
referenceListener.onHTTPError = handleError;
referenceListener.onIOError = handleError;
referenceListener.onSecurityError = handleError;
chooseButton_mc.onRelease = choose;
uploadButton_mc.onRelease = uploadCurrent;
function activateUploadButton():Void {
display_txt.text = reference.name;
uploadButton_mc._visible = true;
}
function choose():Void {
reference.browse([{description:'All Files (*.*)', extension:'*.*'}]);
}
function handleError(errorName:String, detail:Object):Void {
restart();
if (arguments.length === 2) {
if (typeof detail === 'number') {
display_txt.text = 'HTTP Error #'+detail;
} else {
display_txt.text = 'Security Error: '+detail;
}
} else {
display_txt.text = 'IO Error';
}
}
function makeProgressBar(x:Number, y:Number):MovieClip {
var bar:MovieClip = createEmptyMovieClip('progressBar_mc', 0);
bar._visible = false;
bar.beginFill(progressBarColor);
bar.lineTo(Stage.width, 0);
bar.lineTo(Stage.width, progressBarHeight);
bar.lineTo(0, progressBarHeight);
bar.lineTo(0, 0);
bar.endFill();
bar._width = 0;
bar._visible = true;
bar._x = x;
bar._y = y;
return bar;
}
function restart():Void {
removeMovieClip(progressBar);
display_txt.text = '';
uploadButton_mc._visible = false;
chooseButton_mc._visible = true;
}
function updateProgress(fileReference:FileReference, bytesLoaded:Number, bytesTotal:Number):Void {
display_txt.text = fileReference.name+' - '+Math.ceil((bytesLoaded/bytesTotal)*100)+'%';
progressBar._width = Math.ceil(Stage.width*(bytesLoaded/bytesTotal));
}
function uploadCurrent():Void {
chooseButton_mc._visible = false;
progressBar = makeProgressBar(0, progressBarY);
reference.upload(scriptLocation);
}


crossdomain.xml:
<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<!-- http://www.helpexamples.com/crossdomain.xml -->
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>

többféle kiszolgálón próbáltam de mindenhol ezt a hibát kapom vissza.

természetesen a System.security.allowDomain paraméter a szervertől függően változik..

Egyik böngészőben sem működik a dolog, a legújabb flashPlayerel próbáltam tesztelni.


a kiragadott ac kód természetesen csak az egyesével történő fájlfeltöltést valósítaná meg.


Köszönöm előre is a segítséget.
Mutasd a teljes hozzászólást!
IOerror jó, mert akkor vagy olvasási, vagy fájlküldési probléma van.

Mivel Firebuggal nem látszik, hogy a flash hogy küldi a fájlt, így a helyedben megnézném Wireshark/HTTPAnalyzerrel, hogy mi a probléma.

A uploader.php fájl biztos ott van, és nincs php parser hiba amivel szétszállna egy 500-as hibával?
Mutasd a teljes hozzászólást!

  • Szia!

    Megnéztem, hogy nálam hogy működik a fájlfeltöltés, ami eltérő lehet. (azon kívül, hogy 80-as porton van minden, nem 8700 mint nálad)

    crossdomain.xml:
    <?xml version="1.0"?>
    <cross-domain-policy>
    <allow-access-from domain="*" to-ports="*"/>
    </cross-domain-policy

    Inicializálás:
    Security.allowDomain( '*' );
    Security.allowInsecureDomain( '*' );

    A "scriptLocation" változónál nem spórolnám le a http/https -t az url elejéről.



    Mutasd a teljes hozzászólást!
  • Szia!

    A "scriptLocation" változóban ha http-vel adom meg az elérési útvonalat, akkor pedig IOerror hibával száll el.

    Az általad megadott paraméterekkel is ugyanaz a jelenség sajnos.
    Megpróbálom az apache2-t 80 as portra belőni és ott kipróbálni.

    Gondolod, hogy lehet jelentősége a port számnak, ha a crossdomain.xml fájlban elviekben az összes portra engedélyt adtunk?
    Mutasd a teljes hozzászólást!
  • IOerror jó, mert akkor vagy olvasási, vagy fájlküldési probléma van.

    Mivel Firebuggal nem látszik, hogy a flash hogy küldi a fájlt, így a helyedben megnézném Wireshark/HTTPAnalyzerrel, hogy mi a probléma.

    A uploader.php fájl biztos ott van, és nincs php parser hiba amivel szétszállna egy 500-as hibával?
    Mutasd a teljes hozzászólást!
  • php ott van, oly annyira, hogyha egy sima html űrlapból hívom meg, akkor végbe megy a feltöltés.

    Viszont van új fejlemény.

    Eddig a flash player 11.4.402.287 verzióját használtam, lefrissítettem a legújabb 11.5.xxx verzióra és most hiba nélkül működik a feltöltés.


    Mivel egyedül te próbáltál segíteni, így a te hozzászólásodat fogadom el jó válaszként.

    köszönöm a segítséget!
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd