Adobe-Runtime-Support
Adobe-Runtime-Support copied to clipboard
iOS : same url using a not trusted certificate, connect first to http and after https causes app crash
Problem Description
on the same url using a not trusted certificate, connect first to http and after https causes iOS app crash.
- all AIR SDK version
- all iOS devices
Steps to Reproduce
package
{
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.HTTPStatusEvent;
import flash.events.IOErrorEvent;
import flash.events.ProgressEvent;
import flash.events.SecurityErrorEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLLoaderDataFormat;
import flash.events.MouseEvent;
public class Main extends Sprite
{
public function Main()
{
this.addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
}
private function addedToStageHandler(e:Event):void
{
this.removeEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
var sprite:Sprite = new Sprite()
sprite.graphics.beginFill(0x0000FF);
sprite.graphics.drawRect( 0, 50, 100, 100);
sprite.graphics.endFill();
sprite.addEventListener(MouseEvent.CLICK, mouseClickHttpHandler);
this.addChild( sprite );
var sprite2:Sprite = new Sprite()
sprite2.graphics.beginFill(0x00FF00);
sprite2.graphics.drawRect( 120, 50, 100, 100);
sprite2.graphics.endFill();
sprite2.addEventListener(MouseEvent.CLICK, mouseClickHttpsHandler);
this.addChild( sprite2 );
}
private function mouseClickHttpHandler(event : MouseEvent) : void
{
var uri:String = "http://test.pol2095.ovh/";
var urlLoader:URLLoader = new URLLoader();
urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
urlLoader.addEventListener(Event.COMPLETE, eSCLCompleteHandler);
urlLoader.addEventListener(Event.OPEN, eSCLOpenHandler);
urlLoader.addEventListener(ProgressEvent.PROGRESS, eSCLProgressHandler);
urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, eSCLSecurityErrorHandler);
//urlLoader.addEventListener("certificateError", eSCLCertificateErrorHandler);
urlLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, eSCLHttpStatusHandler);
urlLoader.addEventListener(IOErrorEvent.IO_ERROR, eSCLIoErrorHandler);
urlLoader.load(new URLRequest(uri));
}
private function mouseClickHttpsHandler(event : MouseEvent) : void
{
var uri:String = "https://test.pol2095.ovh/";
var urlLoader:URLLoader = new URLLoader();
urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
urlLoader.addEventListener(Event.COMPLETE, eSCLCompleteHandler);
urlLoader.addEventListener(Event.OPEN, eSCLOpenHandler);
urlLoader.addEventListener(ProgressEvent.PROGRESS, eSCLProgressHandler);
urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, eSCLSecurityErrorHandler);
//urlLoader.addEventListener("certificateError", eSCLCertificateErrorHandler);
urlLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, eSCLHttpStatusHandler);
urlLoader.addEventListener(IOErrorEvent.IO_ERROR, eSCLIoErrorHandler);
urlLoader.load(new URLRequest(uri));
}
private function eSCLCompleteHandler(event:Event):void {
trace( event.target.data );
}
private function eSCLOpenHandler(event:Event):void {
trace( "open" );
}
private function eSCLProgressHandler(event:ProgressEvent):void {
trace( Math.round(event.bytesLoaded / event.bytesTotal * 100) );
}
private function eSCLSecurityErrorHandler(event:SecurityErrorEvent):void {
trace( event.errorID, event.text );
}
private function eSCLCertificateErrorHandler(event:SecurityErrorEvent):void {
trace( "certificateError", event.errorID, event.text );
event.preventDefault();
}
private function eSCLHttpStatusHandler(event:HTTPStatusEvent):void {
trace( "status as3 : ", event.status );
}
private function eSCLIoErrorHandler(event:IOErrorEvent):void {
trace( event.errorID, event.text );
}
}
}
I tried URLLoader and Loader, same problem
Known Workarounds
no workaround