Excepción de seguridad de Flash inesperada al utilizar URLLoader

Lo que estoy tratando de lograr es cargar algunos datos binarios, específicamente un ByteArray que representa una imagen PNG, a un servidor que usa la clase URLLoader junto con URLRequest.

Cuando configuro elcontentType propiedad de URLRequest a 'multipart / form-data' en lugar de la predeterminada, la llamada aurlLoader.load() resulta en una excepción de seguridad.

Cuando salgo de lacontentType propiedad como predeterminada, funciona bien, pero lleva mucho tiempo (proporcional a la longitud del archivo PNG) para cargar el archivo en el servidor.

Entonces, mi pregunta es ¿POR QUÉ estoy recibiendo esta excepción de seguridad? ¿Y cómo puedo evitarlo?

Tenga en cuenta que mi SWF está siendo servido desde un servidor de desarrollo, no desde el sistema de archivos local (el servidor de desarrollo de Google App Engine para ser precisos).

Aquí está el código:

var pngFile:ByteArray = PNGEncoder.encode(bitmapData);

var urlRequest:URLRequest = new URLRequest('/API/uploadImage');

// With this line of code, the call to urlLoader.load() throws the following security exception:
// 'SecurityError: Error #2176: Certain actions, such as those that display a pop-up window, may only be invoked upon user interaction, for example by a mouse click or button press.'
urlRequest.contentType = 'multipart/form-data';

urlRequest.method = URLRequestMethod.POST;
urlRequest.data = pngFile;
urlRequest.requestHeaders.push(new URLRequestHeader('Cache-Control', 'no-cache'));

urlLoader = new URLLoader();
urlLoader.dataFormat = URLLoaderDataFormat.TEXT;
urlLoader.addEventListener(Event.COMPLETE, onUploadComplete);
urlLoader.addEventListener(IOErrorEvent.IO_ERROR, onUploadError);

NextFrame.addCallback(function () {
    urlLoader.load(urlRequest);
});

Respuestas a la pregunta(3)

Su respuesta a la pregunta