2010-11-05 12 views
5

Tenemos un formulario de inicio de sesión HTML simple en el servidor web de nuestro dispositivo incorporado. El servidor web está codificado de forma personalizada debido a limitaciones severas de memoria. Independientemente de estas limitaciones, nos gusta Chrome y nos gustaría apoyarlo.cómo evitar el encabezado "Content-encoding gzip desinlate" enviado por Chrome?

Todos los navegadores publican una solicitud HTTP en nuestro formulario de inicio de sesión que contiene la cadena esperada "username = myname & password = mypass", pero no Chrome. En cambio, recibimos de Chrome una solicitud de "Desinflado gzip de codificación de contenido". Por cierto, por "todos los navegadores", quiero decir que esto fue probado para funcionar bien en Internet Explorer versiones 9 beta, 8, 7, 6; Firefox versiones 4 beta, 3, 2; Opera 10, 9; Safari 5, 4, 3; y SeaMonkey 2.

En la sección "14.2 Aceptar conjunto de caracteres" de w3.org's http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html intentamos enviar un código HTTP 406 para indicar que este servidor no es compatible con esa codificación con la esperanza de que Chrome intente nuevamente y publique las cuerdas esperadas de la manera estándar. El código 406 devuelto por el servidor web se muestra claramente en la ventana "Revisar elemento" de Chrome, pero parece que Chrome lo trata como un código de error, y no se envían más solicitudes al servidor web. "Error de inicio de sesion." También probamos los códigos de retorno HTTP 405 y 200, el mismo resultado.

Hay una forma de evitar este comportamiento, ya sea con JavaScript del lado del cliente que evitará que Chrome envíe la solicitud "Descifrado gzip de codificación de contenido" o con una respuesta del lado del servidor que explique bien a Chrome. No hagas gzip, solo envíanoslo de la manera habitual?

Intentamos publicar en el foro de solución de problemas de Google Chrome sin respuesta.

¡Cualquier ayuda sería muy apreciada!

Saludos, Bert

Respuesta

0

Suena como cuando se utiliza cromo hacer un post a un servidor la primera vez, por defecto Chrome para utilizar una codificación gzip. Bastante extraño.

La salida fácil es simplemente colocar su nombre de usuario/pase como parámetros GET, y al enviar la respuesta, siempre que no envíe codificación de contenido gzip, cromo debería comenzar a usar publicaciones sin gzip a partir de ese momento. Espero que eso funcione?

0

Probé esto un poco con un simple script de Python que se imprimió en stdout. Pensé que estaba teniendo el mismo problema, pero luego me di cuenta de que me estaba olvidando de tirar el agua. Parece que Chrome siempre envía la solicitud hasta el final de los encabezados antes de enviar el contenido de la solicitud, y tiene que usar una segunda llamada de retorno para obtener los datos POST. Por el contrario, toda la solicitud de Firefox se devuelve en una sola llamada de recv.

2

Está buscando en la sección incorrecta el código de error: la sección 14.11 de RFC 2616 especifica que envíe un 415 (tipo de medio no admitido) si no puede tratar con la codificación de contenido.

Cuestiones relacionadas