Comunidad de diseño web y desarrollo en internet online

Obtener la Url del sitio que llame el SWF

Citar            
MensajeEscrito el 24 Nov 2009 10:24 pm
Hola, tengo un swf que deseo "regalar" por decirlo de algun modo pero solo a un grupo de dominios que tendre en una base de datos, es decir, la url del swf sera publica pero dependiendo del dominio decido si mostrar el contenido del mismo o no.

Estoy trabajando con Flex y estoy un poco estancado en la obtencion de la url del cliente que me referencie, es decir, el swf lo tendre yo en mi servidor pero pueder ser enlazado desde otros, pero la idea es que no todos pueden acceder a el.

De momento estoy intentando obtner la URL de quien me "enlace" de la siguiente forma:

Código ActionScript :

ExternalInterface.call( "window.location.hostname.toString" )


Y funciona pero desde localhost o directamente desde el servidor donde esta ubicado el SWF pero cuando subo un html con la direccion del SWF no funciona me dice:

Código Flex :

SecurityError: Error #2060: Violación de la seguridad Sandbox: el llamador ExternalInterface


Ya coloque el crossdomain en el servidor donde esta el SWF y desde donde quiero llamar el SWF pero nada.

Alguna idea de como corregir este error u otro metodo para obtener la URL de la persona que use mi SWF???

Por figux

12 de clabLevel



 

Colombia

firefox
Citar            
MensajeEscrito el 25 Nov 2009 12:35 pm
¿Pusiste el allowScriptAccess=all en el html? Creo que lo indica en la ayuda
Prueba también una función en JS que te haga un alert de eso

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 25 Nov 2009 01:42 pm
El HTML lo tengo de la siguiente forma:

Código HTML :

<div id="content_flash">
  <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
         id="stylesCreatorV4" width="100%" height="100%"
         codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">
         <param name="movie" value="http://dominio.com/app.swf" />
         <param name="quality" value="high" />
         <param name="bgcolor" value="#869ca7" />
         <param name="allowScriptAccess" value="all" />
         <embed src="http://dominio.com/app.swf" quality="high" bgcolor="#869ca7"
            width="100%" height="100%" name="stylesCreatorMac" align="middle"
            play="true"
            loop="false"
            quality="high"
            allowScriptAccess="all"
            type="application/x-shockwave-flash"
            pluginspage="http://www.adobe.com/go/getflashplayer">
         </embed>
   </object>
</div>


Y cambie el ExternalInterface al siguiente:

Código ActionScript :

Alert.show(ExternalInterface.call( "alert('Prueba JS')" ) );


Pero sigue pasando lo mismo error de violacion al sandBox

Por figux

12 de clabLevel



 

Colombia

safari
Citar            
MensajeEscrito el 25 Nov 2009 01:45 pm
Escribe una función en JS así:

Código :

<script language="javascript">
function muestra(){
  var loc = window.location.hostname.toString()
   alert(loc)
}
</script>


Desde Flash lo llamas:

ExternalInterface.call( muestra())

Puede que tu propuesta original no funcione porque le faltan los paréntesis

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 25 Nov 2009 03:22 pm
Gracias por el codigo, lo probe y funciona pero nuevamente solo en el lugar donde este el SWF cuando lo llamo desde otro server me sigue apareciendo el error de seguridad.

Por figux

12 de clabLevel



 

Colombia

safari
Citar            
MensajeEscrito el 25 Nov 2009 05:53 pm
El sandbox de JS está en el allowScriptAccess, revisa la documentación para ExternalInterface, habla de ese problema

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 25 Nov 2009 07:34 pm
Gracias nuevamente... aparentemente el problema se soluciona de la siguiente manera:

Adobe escribió:

SecurityError — The containing environment belongs to a security sandbox to which the calling code does not have access. To fix this problem, follow these steps:

1) In the object tag for the SWF file in the containing HTML page, set the following parameter:
<param name="allowScriptAccess" value="always" />

2) In the SWF file, add the following ActionScript:
flash.system.Security.allowDomain(sourceDomain)


http://www.adobe.com/livedocs/flex/3/langref/flash/external/ExternalInterface.html#call()

Por figux

12 de clabLevel



 

Colombia

safari

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.