variable guardar crear cookie javascript facebook google-chrome cross-domain

javascript - guardar - crear cookie



Facebook: problema de JavaScript inseguro(los valores de document.domain deben ser los mismos) (2)

En mi caso, tenía un "facebook-like-box" en la vista de "_Layout" y tuve que personalizar algunos CSS para ello, en el archivo global.css .

.fb_iframe_widget, .fb_iframe_widget span, .fb_iframe_widget span iframe[style] { width: 100% !important; }

Luego, cuando traté de cargar páginas internas, como Artículos y Noticias, que tiene un botón Compartir para Facebook, comienza a darme este error:

Uncaught SecurityError: Failed to read the ''contentDocument'' property from ''HTMLIFrameElement'': Blocked a frame with origin "http://localhost:51826" from accessing a frame with origin "http://static.ak.facebook.com". The frame being accessed set "document.domain" to "facebook.com", but the frame requesting access did not. Both must set "document.domain" to the same value to allow access.

De alguna manera, creo que esa línea de código CSS estaba causando este problema (al estar en el ámbito global), tratando de acceder y modificar el comportamiento del iframe para mi botón de compartir.

  1. Eliminar esa línea de código CSS resolvió el problema.
  2. Mover esa línea de código CSS a la página específica que tiene el "facebook-like-box" dentro de las etiquetas <style>.

Mine es una aplicación FB basada en lienzo. Enfrentando un problema tanto en Chrome como en Firefox (aunque generalmente Chrome):

1. Cuando toco mi URL segura de la aplicación fb aprobada en una nueva ventana de Chrome de incógnito ( https://apps.facebook.com/myfbappnamespace/ ), el siguiente error aparece solo por primera vez, y cuando actualizo la página el error se ha ido (la mayoría de las veces)

La página en aproximadamente: espacio en blanco que muestra contenido inseguro de http://static.ak.facebook.com/connect/xd_arbiter.php?version=18#cb=f2e4fe7b ... os.com% 2Ff4aeadb2 & domain = www.mydomain.com & relation = parent & error = usuario desconocido.

JavaScript inseguro intenta acceder al marco con la URL http://www.mydomain.com/control/myfacebookapp/ desde el marco con URL http://static.ak.facebook.com/connect/xd_arbiter.php?version=18#cb=f2e4fe7b ... os.com% 2Ff4aeadb2 & domain = www.midominio.com & relation = parent & error = unknown_user. El marco de solicitud de acceso establece ''document.domain'' en ''facebook.com'', pero el marco al que se accede no. Ambos deben establecer ''document.domain'' en el mismo valor para permitir el acceso.
xd_arbiter.php: 18

JavaScript inseguro intenta acceder al marco con la URL http://www.mydomain.com/control/myfacebookapp/ desde el marco con URL http://static.ak.facebook.com/connect/xd_arbiter.php?version=18#cb=f2e4fe7b ... os.com% 2Ff4aeadb2 & domain = www.midominio.com & relation = parent & error = unknown_user. El marco de solicitud de acceso establece ''document.domain'' en ''facebook.com'', pero el marco al que se accede no. Ambos deben establecer ''document.domain'' en el mismo valor para permitir el acceso. xd_arbiter.php: 18

2. Cuando pruebo http url ( http://apps.facebook.com/myfbappnamespace/ ), el error que se muestra en la consola es:

JavaScript inseguro intenta acceder al marco con URL http://apps.facebook.com/myfbappnamespace/ desde el marco con URL https://s-static.ak.facebook.com/connect/xd_arbiter.php?version=18#channel= ... Fcontrol% 2Ffacebookappchannelurl% 3Ffb_xd_fragment% 23xd_sig% 3Df23e84e85c% 26. El marco que solicita acceso tiene un protocolo de ''https'', el marco al que se accede tiene un protocolo de ''http''. Los protocolos deben coincidir.

Ahora cuando inicio sesión en mi cuenta de fb para ver qué pasa con estos errores, desaparecen, de nuevo solo algunas veces. Sé que estoy usando "la mayoría de las veces" y "a veces" aquí en mi consulta, pero eso es exactamente lo que está sucediendo conmigo. También busqué foros y me di cuenta de que fb ya había resuelto este problema antiguo que se suponía que era específico de Chrome. Me he asegurado de que mi FB.init y otras llamadas sean específicas de location.protocol. También se configuraron los valores correctos en canvas url (http) y secure canvas url (https). También intenté con las dos configuraciones: Configuración de la cuenta -> Seguridad -> Navegación segura -> (Activado o Inhabilitado)

¿Alguien puede ayudar si me falta algo en alguna parte?


Hay muchos problemas posibles. Pruebe con una de estas soluciones:

  • los protocolos deben ser iguales (por lo que la página que intenta acceder al iframe debe tener el mismo protocolo del sitio que entrega el iframe), de modo que si prueba su aplicación en modo sandbox (http en lugar de https), desactive modo de navegación de su cuenta de prueba
  • channelUrl en FB.init() (ver el código a continuación)
  • habilite el mod de encabezados de apache y ponga las líneas a continuación en su .htaccess
  • ponga <div id="fb-root"></div> después de la etiqueta de cuerpo como se explica en el documento de fb aquí: https://developers.facebook.com/docs/reference/javascript/
  • intente poner todo el código de inicio de sesión automatizado después de una acción del usuario (como hacer clic en un botón de inicio de sesión)
  • elimine la barra diagonal de la URL del lienzo (en la aplicación → configuraciones) como http://yoursite.com?
  • edite su etiqueta <html> siguiente manera: <html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="https://www.facebook.com/2008/fbml">

Código para .htaccess

<IfModule mod_headers.c> Header set Access-Control-Allow-Origin "*" </IfModule>

Código para la emisión de canales :

FB.init({ appId: ''1234567890'', status: true, cookie: true, xfbml: true, channelUrl : ''//yoursite.com/channel.html'' });

El canal.html entregado por su servidor debe contener esta única línea:

<script src="//connect.facebook.net/en_US/all.js"></script>

EDITAR

Sobre su primer problema:

The page at about:blank displayed insecure content from http://static.ak.facebook.com/connect/xd_arbiter.php?version=18#cb=f2e4fe7b…os.com%2Ff4aeadb2&domain=www.mydomain.com&relation=parent&error=unknown_user.

Esta es una excepción esperada que se usa para evaluar una afección, ya que no tiene efectos secundarios, así que no se preocupe por ella.

Consulte esta pregunta: JavaScript inseguro intenta acceder al marco con URL: los dominios, protocolos y puertos deben coincidir.