Почему некоторые пользователи получают ошибку rsl во флеш-приложении?
Когда некоторые из моих пользователей пытаются получить доступ к моему приложению flash, они получают сообщение об ошибке
RSL Error 1 of 1
То есть, нет кода ошибки или чего-либо еще. Эта страница работает для них в Internet Explorer, но они в основном используют Chrome. Это также отлично работает для меня и другого сотрудника в Chrome. Мы в одной сети.
Вот мой файл.actionScriptProperties
<?xml version="1.0" encoding="UTF-8"?>
<actionScriptProperties mainApplicationPath="Works.mxml" version="3">
<compiler additionalCompilerArguments="-locale en_US -strict=true -debug=true -optimize=true -link-report output.xml -use-network=false" copyDependentFiles="false" enableModuleDebug="true" flexSDK="Flex 3.2" generateAccessible="false" htmlExpressInstall="true" htmlGenerate="true" htmlHistoryManagement="true" htmlPlayerVersion="9.0.124" htmlPlayerVersionCheck="true" outputFolderPath="bin-debug" sourceFolderPath="src" strict="true" useApolloConfig="false" verifyDigests="true" warn="true">
<compilerSourcePath/>
<libraryPath defaultLinkType="1">
<libraryPathEntry kind="4" path="">
<modifiedEntries>
<libraryPathEntry kind="3" linkType="4" path="${PROJECT_FRAMEWORKS}/libs/flex.swc" useDefaultLinkType="true">
<crossDomainRsls>
<crossDomainRslEntry autoExtract="true" policyFileUrl="" rslUrl="flex.swf"/>
</crossDomainRsls>
</libraryPathEntry>
<libraryPathEntry kind="3" linkType="4" path="${PROJECT_FRAMEWORKS}/libs/framework.swc" useDefaultLinkType="false">
<crossDomainRsls>
<crossDomainRslEntry autoExtract="false" policyFileUrl="" rslUrl="https://example.com/rsl/framework_3.2.0.3958.swz"/>
<crossDomainRslEntry autoExtract="false" policyFileUrl="" rslUrl="https://example.com/rsl/framework_3.2.0.3958.swf"/>
</crossDomainRsls>
</libraryPathEntry>
<libraryPathEntry kind="3" linkType="4" path="${PROJECT_FRAMEWORKS}/libs/utilities.swc" useDefaultLinkType="true">
<crossDomainRsls>
<crossDomainRslEntry autoExtract="true" policyFileUrl="" rslUrl="/rsl/utilities.swf"/>
</crossDomainRsls>
</libraryPathEntry>
</modifiedEntries>
</libraryPathEntry>
<libraryPathEntry kind="1" linkType="1" path="libs"/>
</libraryPath>
<sourceAttachmentPath/>
</compiler>
<applications>
<application path="Calendar.mxml"/>
<application path="testImage.mxml"/>
<application path="XMLCreate.mxml"/>
<application path="book.mxml"/>
<application path="Works.mxml"/>
<application path="cpapp.mxml"/>
<application path="books.mxml"/>
<application path="flashup.mxml"/>
<application path="Eyeballs.mxml"/>
<application path="albums.mxml"/>
<application path="DragDrop.mxml"/>
<application path="flexpaint.mxml"/>
<application path="testdrop.mxml"/>
<application path="TextTicker.mxml"/>
<application path="slideshow.mxml"/>
<application path="test.mxml"/>
<application path="bifedit.mxml"/>
<application path="test_canvas.mxml"/>
<application path="canvas.mxml"/>
<application path="LayoutBuilder.mxml"/>
<application path="ComponentBuilder.mxml"/>
<application path="BIF.mxml"/>
</applications>
<modules/>
<buildCSSFiles>
<buildCSSFileEntry destPath="bin-debug" sourcePath="src/CSS/grey.css"/>
<buildCSSFileEntry destPath="bin-debug" sourcePath="src/CSS/timeless3.css"/>
<buildCSSFileEntry destPath="bin-debug" sourcePath="src/CSS/letter_photography.css"/>
<buildCSSFileEntry destPath="bin-debug" sourcePath="src/CSS/bobday.css"/>
<buildCSSFileEntry destPath="bin-debug" sourcePath="src/CSS/wdt.css"/>
<buildCSSFileEntry destPath="bin-debug" sourcePath="src/CSS/sigart.css"/>
<buildCSSFileEntry destPath="bin-debug" sourcePath="src/CSS/save_on_crafts.css"/>
<buildCSSFileEntry destPath="bin-debug" sourcePath="src/CSS/creativehabitat.css"/>
<buildCSSFileEntry destPath="bin-debug" sourcePath="src/CSS/acmoore.css"/>
<buildCSSFileEntry destPath="bin-debug" sourcePath="src/CSS/kamans.css"/>
<buildCSSFileEntry destPath="bin-debug" sourcePath="src/CSS/ipi.css"/>
<buildCSSFileEntry destPath="bin-debug" sourcePath="src/CSS/bachphoto.css"/>
<buildCSSFileEntry destPath="bin-debug" sourcePath="src/CSS/tfstyle.css"/>
<buildCSSFileEntry destPath="bin-debug" sourcePath="src/CSS/front_slide.css"/>
<buildCSSFileEntry destPath="bin-debug" sourcePath="src/CSS/fonts.css"/>
<buildCSSFileEntry destPath="bin-debug" sourcePath="src/CSS/abm.css"/>
<buildCSSFileEntry destPath="bin-debug" sourcePath="src/CSS/appo.css"/>
<buildCSSFileEntry destPath="bin-debug" sourcePath="src/CSS/benfranklin.css"/>
</buildCSSFiles>
</actionScriptProperties>
РЕДАКТИРОВАТЬ: Хорошо, пользователь не отправил мне полную страницу, которая содержала номер ошибки. Полная ошибка:
RSL Error 1 of 1
Error #2048
EDIT2: Crossdomain.xml (находится по адресу https://example.com/crossdomain.xml)
<cross-domain-policy>
<allow-access-from domain="*"/>
</cross-domain-policy>
РЕДАКТИРОВАТЬ 3: Я взглянул на информацию о сети разработчиков. Похоже, что на моей машине он даже не пытается запросить файл междомена, в то время как на машине моего коллеги он запрашивает его по http и https.
Вот код, который встраивает флэш-память:
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="Works" name="Works" width="990" height="670" codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">
<param name="quality" value="high" />
<param name="movie" value="/sites/all/misc/cfa_flex/canvas.swf" />
<param name="wmode" value="transparent" />
<param name="bgcolor" value="#ffffff" />
<param name="allowScriptAccess" value="always" />
<param name="allowFullScreen" value="true" />
<param name="flashVars" value="prodid=&prjid=&apptype=canvastransfer&pid=elegance" />
<param name="apptype" value="canvastransfer" />
<param name="prodid" value="" />
<param name="prjid" value="" />
<param name="allowFullScreen" value="true" />
<param name="domain" value="https://example.com" />
<script type="text/javascript" src="/sites/all/misc/js/AC_OETags.js"></script>
<script type="text/javascript" src="/sites/all/misc/js/detectflash.js"></script>
<script type="text/javascript" src="/sites/all/misc/js/miscscripts.js"></script>
<script type="text/javascript" src="/misc/jquery.js"></script>
<script type="text/javascript" src="/sites/all/misc/js/tl.js"></script>
<script type="text/javascript" src="/sites/all/modules/contrib/thickbox/thickbox.js"></script>
<script language="JavaScript" type="text/javascript">
//<![CDATA[
if (hasReqestedVersion) {var content = '<embed src="/sites/all/misc/cfa_flex/canvas.swf?k" quality="high" bgcolor="#ffffff"'
+ 'id="Works"'
+ 'allowFullScreen="true"'
+ 'width="990" height="670" name="Works" align="middle"'
+ 'wmode="transparent"'
+ 'play="true"'
+ 'loop="false"'
+ 'quality="high"'
+ 'allowFullScreen="true"'
+ 'flashVars="apptype=canvastransfer"'
+ 'allowScriptAccess="always"'
+ 'type="application/x-shockwave-flash"'
+ 'pluginspage="http://www.adobe.com/go/getflashplayer">'
+ '</embed>';
document.write(content);
} else {
document.write('<h3 style="font-family:Arial, Helvetica, sans-serif; color:#999999;">You do not have the latest version of Macromedia Flash Player.</h3><a href="http://www.macromedia.com/go/getflashplayer" target="_blank"><img src="http://www.macromedia.com/images/shared/download_buttons/get_flash_player.gif" border="0" width="88" height="31" alt="Get Adobe Flash Player" /></a><a href="http://www.adobe.com/go/getflash/">The website requires 9 or higher version of flash to display the content.</a><p>To Download Flash Player on Android, see: <a href="http://forums.adobe.com/thread/1061194">http://forums.adobe.com/thread/1061194</a>.</p>');
}
//]]>
</script>
</object>
РЕДАКТИРОВАТЬ 4: Кроме того, когда кросс-домен вызывается с моего компьютера коллеги, он вызывается с использованием нашего другого домена
https://www.example2.com/crossdomain.xml
http://www.example2.com/crossdomain.xml
Принимая во внимание, что запрос на оригинальную страницу
https://example.com/cfa/canvastransfer
Дело в том, что все они должны работать на всех 3 наших доменах одинаково.
РЕДАКТИРОВАТЬ 5: Обновленный allowScriptAccess будет всегда, а не sameDomain в коде, который встраивает Flash. Без изменений.
РЕДАКТИРОВАТЬ 6: В одном из моих файлов MXML я вызываю это (все еще возникают те же проблемы):
Security.loadPolicyFile("https://example.com/crossdomain.xml");
2 ответа
Как только я получил файл crossdomain.xml для загрузки, у меня все еще были проблемы
Security.loadPolicyFile(getRootDomain() + "crossdomain.xml");
Security.loadPolicyFile(getRootDomain() + "policyFile.xml");
public static function getRootDomain():String
{
return "https://" + ExternalInterface.call("getRoot") + "/";
}
По сути, следовало убедиться, что все URL-адреса используют https, а не http, казалось, решают проблему вместе со строками loadPolicyFile.
У вас есть файл crossdomain.xml, развернутый на сервере, который обслуживает rsls?
Это также может быть вызвано попыткой загрузить rsl через http, когда ваше приложение swf обслуживается через https.