2011-04-26 18 views
5

De acuerdo con esta línea de registro de acceso de Apache, parece que Opera a veces incluye el fragmento de hash en el URI enviado al servidor:Opera post (GET) es el fragmento hash de la URL

[26/Apr/2011: 01: 09: 03 +0200] "GET/dagbok/# type = food HTTP/1.1" 500 - "-" "Opera/9.80 (Windows NT 6.1; U; nb) Presto/2.8.131 Version/11.10 "

¿Alguna experiencia o conocimiento sobre por qué está haciendo eso?

El URI debe quedar atrapado por el evento de cambio de hash de jQuery que a su vez desencadena .load() en el URI /dagbok/food/.

PD! El 500 Internal Server se produce porque el enrutamiento no comprende los URI con un fragmento hash. Tampoco debería.

de actualización con RewriteRules:!!!.

RewriteEngine en
RewriteCond% {} -d REQUEST_FILENAME
RewriteCond% {} REQUEST_FILENAME -f
RewriteRule (js | ico | txt | gif | jpg | png | css) $ index.php

Index.php inicia el controlador/enrutador delantero Zends que no puede encontrar ninguna ruta para este URI. Lo cual es correcto ya que este URI nunca debería llegar al servidor.

+0

¿En qué versión de Opera está viendo esto? –

+0

Puede publicar algunos detalles sobre el servidor, el registro se ve extraño ya que el servidor debe ignorar el fragmento. ¿Usas alguna rewrite_rules? –

+0

@Roatin Marth Como el registro dice que es Opera 11.10. También lo vi con 11.01, pero nadie lo usa más. –

Respuesta

0

Supongo que jQuery no elimina la parte #hash de la URL antes de enviar una XMLHttpRequest, y depende de que el navegador lo haga. Una prueba rápida muestra que Opera no funciona. (Esto probablemente debería considerarse un error en Opera - No creo que haya ningún estándar que cubra este punto exacto, pero no está haciendo lo que muchos otros probablemente hacen).

+0

[RFC 3986] (http://tools.ietf.org/html/rfc3986) en realidad describen cómo debería comportarse el fragmento en el punto '3.5. Fragmento' que indica: _ Como tal, el identificador de fragmento no se utiliza en el procesamiento específico de esquema de un URI; en su lugar, el ** identificador de fragmento está separado del resto del URI anterior ** a una desreferencia, y por lo tanto, la información de identificación dentro del fragmento es desreferenciada ** únicamente por el agente de usuario **, independientemente del esquema de URI._ –

+0

¿Eres capaz de reproducir el comportamiento? –

+0

Sí, y puedo confirmar que es un error conocido que probablemente se resuelva en la próxima actualización de la versión de Opera. (El arreglo puede no entrar si hay una versión muy pequeña, es decir, 11.11 para un problema de seguridad o algo así, pero está en proceso). – hallvors