Не удается загрузить 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 по какой-то причине.
Если я введу 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-примере предыдущей ссылки, но ничего не отобразилось.
Если я использую html-файл, который использует swf-файл, расположенный на флэш-памяти жесткого диска, он может прочитать его и правильно загрузить флэш-память. Этот код работает:
<object name = "play" type = "application/x-shockwave-flash" data = "C:/tmp/my_file.swf"
Я использовал относительный путь com.mypackage/my_file.swf вместо http://мой_сервер:8080/service/com.mypackage/my_file.swf. Журнал выдачи Chrome, уведомляющий об успешном выполнении запроса на получение (200) для этого SWF-файла. Однако файл по-прежнему не читается Flash.
Я попытался использовать следующий код, но ничего не отображается:
<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>
Я также использую flashplayer_32_sa_debug.exe для отладки swf-файла. Когда я использую swf-файл на своем локальном жестком диске, он работает, но когда я использую URL-адрес http://мой_сервер:8080/service/com.mypackage/my_file.swf, он падает без ошибок. Я предполагаю, что это проблема аутентификации в этом случае. Обычно я аутентифицируюсь на my_server, а затем пытаюсь загрузить swf-файл.
Если я использую другой файл 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.
Когда я использую 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)_
![[UX] Категории и настройки внешнего вида Flash-сообщений](https://i.imgur.com/5LZljB8b.jpeg)
Исправление заключалось в том, чтобы разрешить расширение swf в качестве типа flash mime в конфигурации web.wml. Фильтр «x-content-type-options» на сервере Wildfly блокировал файлы swf.
<filter-ref name = "x-content-type-options"/>
Поскольку этот swf-файл был правильно загружен с сервера причала, мне пришлось предположить, что виноват мой сервер Wildfly.
также
Ваш "исходный код, который используется для работы", кажется, отлично работает для меня (примечание: мой URL-адрес не включает порт
8080), и я заменилstyle = "margin:0 10px;width:1000;height:1000;"наwidth = "400" height = "400"для размера моего собственного тестового SWF. Так что, возможно, проблема заключается в использовании порта 8080 ... Используя параметр «Инструменты разработчика» Chrome, (1) Проверьте через вкладку сеть любой запрос на файлcrossdomain.xml? (2) Проверьте на вкладке приставка наличие ошибок. (3) Изменяли ли вы что-либо в последнее время, например, поставщика серверов, или, возможно, изменили использование локального хоста на онлайн-хост?