Не удается загрузить swf-файл из http-источника (сервер wildfly) в Chrome?

Не удается загрузить SWF-файл (http://мой_сервер:8080/service/com.mypackage/my_file.swf) из Chrome. Он может загрузить тот же файл из Chrome, если он находится на жестком диске. Я использую flash 32.0.0.171 и Chrome версии 51.0.2704.84 (64-разрядная версия). Другие браузеры, такие как IE, имеют аналогичную проблему. Когда я использую F12 для отладки проблемы, ошибок нет, и кросс-домен не используется, только файл swf извлекается с запросом GET.

Этот SWF-файл создается версией компилятора Adobe AIR 3.7 SDK. я не могу установить последнюю версию SDK по какой-то причине.

  1. Если я введу http://мой_сервер:8080/service/com.mypackage/my_file.swf в Chrome, он будет автоматически загружен. Если я введу swf-файл (CDdemo.swf) по этой ссылке https://security.stackexchange.com/questions/154182/why-is-google-chrome-blocking-raw-swf-playback, корректно загружается в этом же браузере и флешка корректно проигрывает CDdemo.swf. Я попытался использовать тот же объектный код, что и в html-примере предыдущей ссылки, но ничего не отобразилось.

  2. Если я использую html-файл, который использует swf-файл, расположенный на флэш-памяти жесткого диска, он может прочитать его и правильно загрузить флэш-память. Этот код работает:

<object name = "play" type = "application/x-shockwave-flash" data = "C:/tmp/my_file.swf"
  1. Я использовал относительный путь com.mypackage/my_file.swf вместо http://мой_сервер:8080/service/com.mypackage/my_file.swf. Журнал выдачи Chrome, уведомляющий об успешном выполнении запроса на получение (200) для этого SWF-файла. Однако файл по-прежнему не читается Flash.

  2. Я попытался использовать следующий код, но ничего не отображается:

<object width = "800" height = "600" classid = "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase = "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0">

    <embed src = "http://my_server:8080/service/com.mypackage/my_file.swf" quality = "high"type = "application/x-shockwave-flash" width = "800" height = "600" />
</object>
  1. Я также использую flashplayer_32_sa_debug.exe для отладки swf-файла. Когда я использую swf-файл на своем локальном жестком диске, он работает, но когда я использую URL-адрес http://мой_сервер:8080/service/com.mypackage/my_file.swf, он падает без ошибок. Я предполагаю, что это проблема аутентификации в этом случае. Обычно я аутентифицируюсь на my_server, а затем пытаюсь загрузить swf-файл.

  2. Если я использую другой файл swf, у меня тоже ничего не отображается. я сильно подозреваю, что на моем сервере Wildfly есть блокировка. Я могу загрузить этот файл SWF в тот же Chrome с сервером причала. На мой взгляд, это специфическая проблема Wildfly.

Это также исходный код, который раньше работал, но теперь не отображается в браузере Chrome:

<body>
<object name = "play" type = "application/x-shockwave-flash" data = "http://my_server:8080/service/com.mypackage/my_file.swf" 
id = "play" style = "margin:0 10px;width:1000;height:1000;" allowScriptAccess = "always">

<param name = "wmode" value = "transparent" />
<param name = "flashvars" value = "myvalue=blah" />
<param name = "quality" value = "high" />
<param name = "menu" value = "false" />
<param name = "allowscriptaccess" value = "always" />
 <param name = "autoplay" value = "true" />



</object>
</body>

В журнале доступа к серверу Wildfly у меня есть следующие журналы INFO:

INFO [io.undertow.accesslog] (default task-12) 167.22.22.22 - 0a658140-8ad8-4347-910b-796e651a12cf [27/Apr/2019:12:32:45 +0000] "GET /my_service/my_file.swf HTTP/1.1" 200 116887 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)

Я ожидаю воспроизведения файла swf и отображения содержимого. Должно быть "Идет загрузка...". Ничего не отображается, и отображается только журнал (200 OK) о правильной загрузке файла swf с запросом GET.

Ваш "исходный код, который используется для работы", кажется, отлично работает для меня (примечание: мой URL-адрес не включает порт 8080), и я заменил style = "margin:0 10px;width:1000;height:1000;" на width = "400" height = "400" для размера моего собственного тестового SWF. Так что, возможно, проблема заключается в использовании порта 8080 ... Используя параметр «Инструменты разработчика» Chrome, (1) Проверьте через вкладку сеть любой запрос на файл crossdomain.xml? (2) Проверьте на вкладке приставка наличие ошибок. (3) Изменяли ли вы что-либо в последнее время, например, поставщика серверов, или, возможно, изменили использование локального хоста на онлайн-хост?

VC.One 26.04.2019 22:06

Когда я использую F12, на стороне клиента нет ошибок, а только запрос 200 OK GET для получения файла swf на вкладке сети. Crossdomain.html не получен. Я использую локальный хост. SWF-файл находится на сервере Wildfly, работающем внутри докера (новое изменение). Журнал доступа Wildfly: INFO [io.undertow.accesslog] (задача по умолчанию-12) 167.22.22.22 - 0a658140-8ad8-4347-910b-796e651a12cf [27/Apr/2019:12:32:45 +0000] «GET /my_service /my_file.swf HTTP/1.1" 200 116887 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, как Gecko)_

Jean Reno 27.04.2019 14:37
[UX] Категории и настройки внешнего вида Flash-сообщений
[UX] Категории и настройки внешнего вида Flash-сообщений
Flash-сообщение - это обычный веб-элемент, используемый для отправки короткого сообщения пользователю. Например, на странице входа в систему может...
1
2
459
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Исправление заключалось в том, чтобы разрешить расширение swf в качестве типа flash mime в конфигурации web.wml. Фильтр «x-content-type-options» на сервере Wildfly блокировал файлы swf.

<filter-ref name = "x-content-type-options"/>

Поскольку этот swf-файл был правильно загружен с сервера причала, мне пришлось предположить, что виноват мой сервер Wildfly.

также

Другие вопросы по теме