2011-05-11 9 views
11

En mi trabajo, utilizan un recurso de "inicio de sesión central" en las páginas web internas. Cada vez que una página web interna requiere autenticación, lo reenvía al inicio de sesión central y, después de iniciar sesión, lo envía de vuelta a la página que estaba tratando de ver.Crear el complemento de Firefox para arreglar la página web rota sobre la marcha

La primera línea en el código HTML de esta página central de inicio de sesión comienza con esto:

<!-- Encoding=ISO-8859-1; 

Pero Nunca termina el comentario, lo que significa que todo el código HTML en todo el documento es en realidad comentó fuera. Esto funciona bien en IE6 (que es el estándar de la compañía - ¡eek!), Y solía funcionar en Firefox, pero cuando actualicé a Firefox 4, esto ya no funciona (como no debería, está siguiendo los estándares).

he salvado la fuente y cambiado la primera línea a:

<!-- Encoding=ISO-8859-1; --> 

Y entonces la página se mostrará, pero ya que se carga desde file:///, no puedo presentar mis credenciales al servidor principal. ..

Odio el uso de IE6, pero para todas las páginas internas estoy atrapado porque Firefox muestra una página vacía cada vez que me envían al inicio de sesión central.

¿Es posible crear un complemento de Firefox (o incluso un script de Greasemonkey) para modificar el código HTML cuando ingresa al navegador antes de que se procese? Veo toneladas de ejemplos de modificación de HTML una vez que ya está cargado, pero no puedo encontrar nada para manipular mientras lo está cargando.

Supongo que estoy abierto a otras soluciones además de un complemento, pero eso fue lo único que se me ocurrió. Además, no podemos usar Chrome o Safari, por lo que está desactivado. Y no, no puedo hablar con la persona a cargo de la página de inicio de sesión central y lograr que lo cambien. Proxying probablemente también sea muy difícil debido a la naturaleza de la página.

¡Gracias de antemano!

+3

Que desastre santo :) Me encanta, +1 – Henry

+2

+1 fuera de simpatía. Que desastre. – delnan

+2

@Henry y @delnan - Agradezco la simpatía. Es hilarante porque las entradas para este han sido abiertas por otras ovejas negras (usuarios de Firefox) y la respuesta estándar es "Usar el navegador estándar" (IE6). En realidad, eso no es tan hilarante ahora que lo pienso ... – BrianH

Respuesta

1

Tal vez un Apache local con mod_proxy y mod_subsitute podría ser utilizado para esto? Deriva de un ejemplo de berkek.com:

<VirtualHost *> 
    ServerAdmin [email protected] 
    ServerName www.yourcompany.com 
    <Proxy *> 
    Order deny,allow 
    </Proxy> 
    ProxyRequests on 
    ProxyPass/http://www.yourcompany.com/ 
    ProxyPassReverse/http://www.yourcompany.com/ 
    AddOutputFilterByType SUBSTITUTE text/html 
    Substitute "s|<!-- Encoding=ISO-8859-1;|<!-- Encoding=ISO-8859-1; -->|n" 
</VirtualHost> 
+0

No sabía acerca de ProxyPassReverse, así que tal vez eso funcionaría. Para mi comentario a la respuesta anterior, ¿el enrutamiento no ralentizará toda mi navegación, solo para arreglar una página de inicio de sesión? (Por supuesto, mi navegación es una experiencia horrible actualmente, ya que estoy en IE6) – BrianH

+0

Por supuesto, puede configurar su navegador para que solo use el proxy en los sitios que necesita esta solución. Ver p. [archivo proxy pac] (http://en.wikipedia.org/wiki/Proxy_auto-config) –

+0

El archivo pac funciona bien. Sin embargo, no puedo hacer que la sustitución funcione. Instalé XAMPP y agregué un host virtual con las líneas sustitutas. Sirve a la página pero no lo sustituirá. Incluso hice un sustituto de 's | a | BLAH | ni', pero aún así no funcionaría. Encontré muchos documentos, pero nada parece funcionar. – BrianH

0

¿Cuáles son sus razones para no usar un proxy?

Apache httpd + mod_proxy + mod_ext_filter debería resolver sus problemas fácilmente; usas mod_ext_filter para conectar un programa que arreglará la página (el script de shell pequeño debería funcionar).

+0

hmm - Realmente no quiero que toda mi navegación sea a través de un proxy, solo para una página (la página de inicio de sesión). ¿No mod_ext_filter ralentizará toda mi navegación? (no muy familiarizado con él) – BrianH

+0

mod_proxy w/ProxyPass y ProxyPassReverse no es el proxy común. Usted accede a http: // newapacheserver/path y envía la solicitud a http: // borkedappserver/path, no necesita configurar un proxy en su navegador. – alex

1

Aquí es un método que encontré:

El Fiddler Web Debugging Proxy. Básicamente está haciendo lo que @Tatu Lahtela suggested y qué @alex suggested, solo que sin apache.

Estos son los pasos que di:

  1. Download e instalar violinista
  2. Run violinista, que escucha en el puerto 8888 (por defecto)
  3. En las opciones Fiddler (HTTPS pestaña), comprobar el Cuadro "Descifrar el tráfico HTTPS"
  4. En Fiddler, haga clic en el Menú Reglas, luego en Reglas personalizadas.
  5. En mi editor de texto, me encontré con la función OnBeforeResponse, y añade este código:

    if (oSession.oResponse.headers.ExistsAndContains("Content-Type", "html")){ 
        // Remove any compression or chunking  
        oSession.utilDecodeResponse(); 
    
        var oBody = System.Text.Encoding.UTF8.GetString(oSession.responseBodyBytes); 
    
        var oRegEx = /<!-- Encoding=ISO-8859-1; /gi; 
        oBody = oBody.replace(oRegEx, "<!-- Encoding=ISO-8859-1; -->"); 
    
        oSession.utilSetResponseBody(oBody); 
    } 
    
  6. En Fiddler, en la pestaña Herramientas> Opciones-> Conexiones, haga clic en "Copiar URL de proxy del explorador de configuración" (Este es el archivo proxy PAC que @Tatu Lahtela mencionó).

  7. En Firefox, Herramientas-> Opciones-> Pestaña Avanzado> Red> Configuración de tabuladores, marque "URL de configuración automática de proxy y pegar la URL de la etapa 6 #.
  8. resaca la tela!

he modificado el archivo PAC para limitar los sitios que fueron a Fiddler como @Tatu Lahtela sugirió.

Esto funciona para mí, con una configuración mínima. Un complemento de Firefox sería mejor para mí ya que no tendría que utilizar un programa externo, pero construir uno para hacer esto parece bastante difícil.

¡Gracias a todos los que ayudaron! Marcaré la respuesta de @Tatu Lahtela como la respuesta aceptada, ya que así es como pude encontrar lo que necesitaba.

Cuestiones relacionadas