Exceção inesperada de segurança do Flash ao usar o URLLoader

O que eu estou tentando fazer é carregar alguns dados binários, especificamente um ByteArray representando uma imagem PNG, para um servidor usando a classe URLLoader em conjunto com URLRequest.

Quando eu definir ocontentType propriedade do URLRequest para 'multipart / form-data' em vez do padrão, a chamada paraurlLoader.load() resulta em uma exceção de segurança.

Quando eu sair docontentType propriedade como o padrão, ele funciona bem, mas leva muito tempo (proporcional ao comprimento do arquivo PNG) para fazer o upload do arquivo para o servidor.

Então, minha pergunta é: POR QUE estou recebendo essa exceção de segurança? E como posso evitar isso?

Observe que meu SWF está sendo exibido a partir de um servidor de desenvolvimento, não do sistema de arquivos local (para ser preciso, o servidor de desenvolvimento do Google App Engine).

Aqui está o 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);
});

questionAnswers(3)

yourAnswerToTheQuestion