Hace algún tiempo, necesitaba obtener la fuente de la página a través de JavaScript. Esta operación es muy simple. Puede obtenerlo usando document.referrer. Sin embargo, todavía hay muchas situaciones inesperadas en las aplicaciones reales, así que las ordenemos brevemente aquí.
El primer problema que encontré es que después de pasar de la página HTTPS a la página HTTP, el valor de Document.ReFerrer está vacío. Por razones de seguridad, algunas páginas importantes de muchos sitios web (como la página de inicio de sesión de Taobao) usan el protocolo HTTPS. Si un usuario que no registra los clics en el enlace a la página B (página HTTP) en la página A (página HTTP), pero la página B requiere que el usuario inicie sesión, por lo que salta a la página de inicio de sesión (la página https), y luego salta a B (página http) después de iniciar sesión, se puede encontrar el ruta de acceso de documento. Referente, si hay una página HTTP y una página HTTPS en la ruta, entonces la ruta se romperá de https a http.
La raíz de este problema es la política de seguridad del navegador, y parece que no hay una solución particularmente buena para confiar solo en JavaScript. Una idea de la rotonda es usar Window.name, escribir la URL de la página actual en Window.name en la página HTTPS y luego leerla en la página siguiente (página HTTP).
Además de esta situación, ¿se puede recuperar el documento. Busqué y descubrí que alguien ha compilado una lista aquí, pero no es muy completo, como el caso de IE6 que no está incluido. Así que lo hice yo mismo, instalé n navegadores en la máquina virtual y probé todas las situaciones (realmente era un trabajo físico), y los resultados se mostraron en la tabla a continuación:
| funcionar | IE6 | IE7 | IE8 | IE9 | Firefox | Cromo | Ópera | Safari |
|---|---|---|---|---|---|---|---|---|
| Ingrese la URL directamente en la barra de direcciones | " | " | " | " | " | " | " | " |
| URL de acceso desde el marcador | " | " | " | " | " | " | " | " |
| Haga clic en el hipervínculo desde la página A y salta a la página B (Target = "_ Self") | √ | √ | √ | √ | √ | √ | √ | √ |
| Haga clic en el hipervínculo desde la página A y salta a la página B (Target = "_ en blanco") | √ | √ | √ | √ | √ | √ | √ | √ |
| Haga clic con el botón derecho en el hipervínculo desde la página A y abra la página B en una nueva pestaña | - | √ | √ | √ | √ | √ | √ | " |
| Haga clic derecho en el hipervínculo desde la página A y abra la página B en una nueva ventana | √ | √ | √ | √ | √ | √ | √ | " |
| Arrastre el enlace a la barra de direcciones | " | Incapaz de arrastrar | Incapaz de arrastrar | " | " | " | " | " |
| Arrastre el enlace a la barra de pestaña | - | " | " | " | " | " | " | " |
| Use los botones de avance y retroceso del navegador | √ | √ | √ | √ | √ | √ | √ | √ |
| JS modificar ubicación.href | " | " | " | √ | √ | √ | √ | √ |
| Js usa ventana. | " | " | " | " | √ | √ | √ | √ |
| Redirección del servidor (302 salto) | Dirigido a la página anterior | Dirigido a la página anterior | Dirigido a la página anterior | Dirigido a la página anterior | Dirigido a la página anterior | Dirigido a la página anterior | Dirigido a la página anterior | Dirigido a la página anterior |
| Página meta actual | " | " | " | " | " | Página de giro | Página de giro | Página de giro |
El "√" en la tabla anterior significa que el referente se puede recuperar normalmente "," significa que el referente está vacío.
A excepción de IE, otros navegadores son las últimas versiones que se pueden descargar en el sitio web oficial. Entre ellos, Safari probó tanto la versión de Windows como la versión Mac, y la conclusión es la misma.
También hay algunos casos en los que no se han realizado pruebas, como si el referente se puede mantener en cada navegador al hacer clic en Flash para saltar.
La mayoría de las situaciones en la tabla anterior están en línea con las expectativas, pero parece haber varias cosas a las que prestar atención:
1. En Safari, hacer clic con el botón derecho para abrir el enlace hará que se pierda el referente;
2. En IE, modificando la ubicación.href o el uso de la ventana. Abra la página perderá el referente (hay una excepción en IE 9, usando Ubicación.
3. Cuando se usa meta salto, el referente se perderá en IE/Firefox.
Finalmente, una conclusión simple es: si necesita acceder a la fuente a través de la página de colección de documentos. ReferRer, es mejor no usar JS para saltar o abrir una nueva ventana, ni usar Meta para saltar.