Ошибка Flash Sandbox Security начала появляться только в последний день. Мертвые в воде. ошибка № 3769

У меня есть набор приложений на базе Flex/AGS, размещенных локально, которые работают уже много лет.

В последний день или около того я получаю следующую ошибку безопасности песочницы ТОЛЬКО в браузерах IE:

SecurityError: Ошибка № 3769: Нарушение изолированной программной среды безопасности: невозможно отправлять заголовки HTTP при использовании navigationToUrl().

Вот наш файл crossdomain.xml: http://maps.larimer.org/crossdomain.xml

Ошибка возникает только тогда, когда вы пытаетесь использовать наш процесс печати в формате livepdf (который снова работал без проблем в течение многих лет). Я понимаю, что это не проблема esri, но я надеюсь, что здесь есть опытные специалисты, которые могли бы помочь. Как бы то ни было, все мои возможности создания PDF-файлов для IE бесполезны, пока я не решу эту проблему.

Если вы перейдете на http://maps.larimer.org/lil и нажмете кнопку "pdf", затем «создать pdf», индикатор выполнения либо просто зависнет, либо вы получите указанную выше ошибку флэш-памяти.

Процесс создания pdf отлично работает в Firefox и иногда работает в Chrome (но у chrome есть отдельная проблема с pdf, не связанная с этим).

Любые подсказки или помощь больш были бы оценены. Я исчерпал все свои ресурсы на этом.


person user3646091    schedule 16.05.2014    source источник
comment
ОБНОВЛЕНИЕ: похоже, что виноват новейший Flash Player (13.....214). Хочу посмотреть, могу ли я добавить что-нибудь в файл crossdomain.xml, чтобы исправить это. Приветствуются любые идеи, большие или маленькие. Кроме того, это не только IE, но и Firefox. В Chrome есть собственный встроенный проигрыватель Flash, поэтому он может быть затронут или не затронут.   -  person user3646091    schedule 17.05.2014


Ответы (4)


У меня была эта проблема, и я решил ее, заменив:

var jpgSource:BitmapData = new BitmapData(MovieClip(root).main_mov.width, MovieClip(root).main_mov.height);
jpgSource.draw(MovieClip(root).main_mov);

var jpgEncoder:JPGEncoder = new JPGEncoder(85);
var jpgStream:ByteArray = jpgEncoder.encode(jpgSource);
var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream");
var jpgURLRequest:URLRequest = new URLRequest("http://www.mysite.co.uk/tools/generic/jpg_encoder_download.php?name=design.jpg");
jpgURLRequest.requestHeaders.push(header);
jpgURLRequest.method = URLRequestMethod.POST;
jpgURLRequest.data = jpgStream;

navigateToURL(jpgURLRequest, "_self"); // Use _self not _blank to prevent popup blocker

с:

var jpgSource:BitmapData = new BitmapData(MovieClip(root).main_mov.width, MovieClip(root).main_mov.height);
jpgSource.draw(MovieClip(root).main_mov);

var jpgEncoder:JPGEncoder = new JPGEncoder(85);
var jpgStream:ByteArray = jpgEncoder.encode(jpgSource);
var jpgURLRequest:URLRequest new URLRequest("http://www.mysite.co.uk/tools/generic/jpg_encoder_download.php?name=design.jpg");
jpgURLRequest.method = URLRequestMethod.POST;
jpgURLRequest.data = jpgStream;

navigateToURL(jpgURLRequest, "_self"); // Use _self not _blank to prevent popup blocker

Делаем это сейчас Если вы используете PHP для вывода файла, как в jpg_encoder_download.php, вы заметите, что ваш

$GLOBALS["HTTP_RAW_POST_DATA"]

больше не будет работать. Я заменил $GLOBALS["HTTP_RAW_POST_DATA"] на

file_get_contents('php://input')

и теперь отлично работает, как показано в примере ниже.

// Get bytearray
$jpg = file_get_contents('php://input');

// Add headers for download dialog-box
header('Content-Type: image/jpeg');
header("Content-Disposition: attachment; filename=".$_GET['name']);
echo $jpg;
person user3667996    schedule 23.05.2014

В сообщении об ошибке сказано все: Cannot send HTTP headers when using navigateToUrl(). Используя navigateToUrl() метод, объект URLRequest, предоставленный он не должен иметь никаких заголовков. Как вы обнаружили, это новое ограничение, введенное в версии FP 13.0.214, вероятно, в ходе решения одной или нескольких проблем из бюллетеня по безопасности FP [APSB14-14].

person user3646262    schedule 16.05.2014
comment
Многие разработчики считают ограничение, введенное в 13.0.0.214, слишком жестким. Это ломает многие приложения. Ошибка зарегистрирована, вы можете проголосовать за нее здесь: bugbase.adobe.com /index.cfm?event=bug&id=3759971 - person Chris; 19.05.2014
comment
Есть надежда. Adobe упомянула сегодня, что они ослабят правило HTTP-заголовка в следующем выпуске флэш-памяти. - person Chris; 06.06.2014

Это ошибка в Adobe Flash 13.0.0.214 и, возможно, в 13.0.0.0. Подробнее см.: https://bugbase.adobe.com/index.cfm?event=bug&id=3759971 https://forums.adobe.com/thread/1475657

person Akshay    schedule 29.05.2014

Я только что опубликовал решение, которое сработало для меня: Adobe Forums: Did Flash 13.0 .0.214 сломать navigationToUrl?

По сути, поскольку я не использую заголовки в своем приложении, я просто удалил их.

var myRequest:URLRequest = new URLRequest(url:String);

// Here I don't know how many headers are sent, so we remove all the headers.
while (myRequest.requestHeaders.length > 0) {
   myRequest.requestHeaders.pop();
}
person rseixas    schedule 19.05.2014