Pregunta

La configuración es la siguiente:

  • Firefox (3.x tanto y 4b) con correctamente configurado y certificados, incluyendo un certificado de cliente de trabajo.
  • página web con un tipo de XMLHttpRequest () de llamada AJAX a un subdominio diferente .
  • Custom servidor web en dicho subdominio aceptar solicitudes, reponding con una cabecera Access-Control-Allow-Origin permisiva y que requiere la verificación del cliente .

El problema es que Firefox aborta la solicitud (bueno, eso es lo que se dice en firebug de todos modos) bruscamente. Ejecutar el programa de instalación con openssl s_server indicios de que en lugar de Firefox en realidad ni siquiera enviar el certificado de cliente:

140727260153512:error:140890C7:SSL routines:SSL3_GET_CLIENT_CERTIFICATE:peer
did not return a certificate:s3_srvr.c:2965:ACCEPT

La misma configuración exacta funciona perfectamente con Chrome, lo que sugiere tal vez un error en Firefox. Sin embargo, la realización de la llamada AJAX con un elemento <script> inyectado en el DOM parece funcionar según lo previsto ...

Por lo tanto, nadie más ha funcionado en esto? ¿Es un error? Soluciones provisionales? No se encuentra allí algo obvio?

¿Fue útil?

Solución

Avisador en 5 años más tarde, probablemente no es de mucha ayuda para el PO, pero en caso de que alguien más tiene este problema en el futuro ...

Firefox parece no enviar el certificado de cliente con una petición XHR de origen cruzado por defecto. Configuración withCredentials=true en la instancia XHR resuelva el problema para mí. Tenga en cuenta que yo tampoco veo este problema con Chrome -. Sólo Firefox

Para más información ver esta entrada del blog de Mozilla Dev red . En particular, la siguiente declaración:

  

Por defecto, en las invocaciones XMLHttpRequest entre sitios, los navegadores que tengan   No enviar las credenciales. Una bandera específica tiene que ser establecido en el objeto XMLHttpRequest cuando se invoca.

Otros consejos

La razón por la inyección de los trabajos de guión en lugar de una simple petición XHR se debe a la sola política Origen . Esto probablemente explica por qué Chrome permite que el XHR pero no FF; Chrome considera la parte subdominio del mismo origen, pero FF no lo hace.

La inyección de secuencias de comandos de otros dominios (que es lo que hace Google Analytics) está permitido y una de las prácticas para manejar esta situación.

La forma en que mi manijas del equipo esta situación es haciendo una solicitud a través de un proxy del lado del servidor.

Yo recomiendo usar un proxy del lado del servidor, si se puede, pero el método de inyección script funciona bien siempre y cuando el código está viniendo de una fuente de confianza.

también encontré este artículo que describe su situación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top