flash - ¿Alguien puede publicar una muestra crossdomain.xml bien formada?




(5)

Si está utilizando servicios web, también necesitará el elemento 'allow-http-request-headers-from'. Esta es nuestra política predeterminada de desarrollo, 'permitir todo'.

<?xml version="1.0" ?>
<cross-domain-policy>
  <site-control permitted-cross-domain-policies="master-only"/>
  <allow-access-from domain="*"/>
  <allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>

He estado leyendo que Adobe ha hecho crossdomain.xml stricter en flash 9-10 y me pregunto si alguien puede pegarme una copia de una que sepa que funciona. Tener problemas para encontrar una muestra reciente en el sitio de Adobe.


Esto es lo que he estado usando para el desarrollo:

<?xml version="1.0" ?>
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>

Este es un enfoque muy liberal, pero está bien para mi aplicación.

Como otros han señalado a continuación, tenga cuidado con los riesgos de esto.


Una versión de crossdomain.xml se empaquetó con HTML5 Boilerplate, producto de muchos años de desarrollo iterativo y conocimiento comunitario combinado. Sin embargo, desde entonces se ha eliminado del repositorio. Lo he copiado literalmente aquí, e incluí un enlace a la confirmación a la que se eliminó a continuación.

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
  <!-- Read this: https://www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html -->

  <!-- Most restrictive policy: -->
  <site-control permitted-cross-domain-policies="none"/>

  <!-- Least restrictive policy: -->
  <!--
  <site-control permitted-cross-domain-policies="all"/>
  <allow-access-from domain="*" to-ports="*" secure="false"/>
  <allow-http-request-headers-from domain="*" headers="*" secure="false"/>
  -->
</cross-domain-policy>

Eliminado en # 1881
https://github.com/h5bp/html5-boilerplate/commit/58a2ba81d250301e7b5e3da28ae4c1b42d91b2c2


En el sitio de producción esto parece adecuado:

<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="www.mysite.com" />
<allow-access-from domain="mysite.com" />
</cross-domain-policy>

Descubrí que este error también existirá en situaciones en las que uses el margen automático en CSS.

Por ejemplo, en un diseño de ancho fijo y alineación central, es típico utilizar "margin: 0px auto;" Mantener un contenido bien centrado. Esto parece producir posibles (decimales) márgenes izquierdo / derecho decimales para el contenido bien. Eso no es realmente un problema para Firefox ... maneja bien las compensaciones de píxeles decimales.

Pero los widgets de Flash parecen enloquecer cuando su contenedor de objetos se posiciona con valores de píxeles decimales. Como mínimo, no puede interactuar con el botón "Permitir". Para mí, esto parece ser la causa raíz de este error que verá ampliamente informado por muchos (en lo que se refiere a FF al menos).

En cuanto a por qué solo ocurre en FF, no estoy del todo seguro. En mi máquina OSX, Safari y Chrome no muestran este comportamiento con objetos flash. ¿Es posible que todos los elementos DOM en Webkit se representen automáticamente con valores de desplazamiento de píxeles redondeados?

Para Firefox, implementé esta solución alternativa (útil para los diseños alineados con el centro):

$(document).ready( function() {
  repositionContentContainer();
});

function repositionContentContainer() {
  // this routine is a complete hack to work around the flash "Allow" button bug
  if ( $("#content").length > 0 ) {

    //Adjust the #content left-margin, since by default it likely isn't an int
    setLeftMargin();
    //If the User resizes the window, adjust the #content left-margin
    $(window).bind("resize", function() { setLeftMargin(); });
  }
}

function setLeftMargin() {
  var newWindowWidth = $(window).width();
  var mainWellWidth = $("#content").width();
  // create an integer based left_offset number
  var left_offset = parseInt((newWindowWidth - mainWellWidth)/2.0);
  if (left_offset < 0) { left_offset = 0; }
  $("#content").css("margin-left", left_offset);
}