Prueba simple, acceder http://localhost:8000/hello?foo=bar#this-is-not-sent-to-server
python -c "import SimpleHTTPServer;SimpleHTTPServer.test()"
Serving HTTP on 0.0.0.0 port 8000 ...
localhost - - [02/Jun/2009 12:48:47] code 404, message File not found
localhost - - [02/Jun/2009 12:48:47] "GET /hello?foo=bar HTTP/1.1" 404 -
El servidor recibe la solicitud sin el #appendage - nada después de la etiqueta de hash es simplemente una búsqueda de anclaje en el cliente.
Puede encontrar el nombre de anclaje utilizado dentro de la URL a través de JavaScript usando, como un ejemplo:
<script>alert(window.location.hash);</script>
La función parse_url() en PHP puede funcionar si ya tiene la cadena URL necesario, incluyendo el fragmento (http://codepad.org/BDqjtXix):
<?
echo parse_url("http://foo?bar#fizzbuzz",PHP_URL_FRAGMENT);
?>
Output: fizzbuzz
Pero no creo que PHP recibe la información de fragmentos porque es de sólo cliente.
Gracias! Para que quede claro, en lugar de esto: 'www.example.com/? Val = 1 # part2' Tendría que redirigir a él en el servidor, así: ' www.example.com/? redirectUrl =% 2F% 3Fval% 3D1% 23part2' y, por supuesto, debe agregar soporte para redireccionar a esa otra url en la otra página. No es increíble, y no funciona para todos los casos de uso, por supuesto, pero funciona para marcadores. Tenga en cuenta que si hace esto, no debe permitir redireccionamientos a direcciones URL absolutas, solo direcciones URL relativas, para asegurarse de no abrirse a [redireccionamientos no seguros] (https://www.owasp.org/index.php/Unvalidated_Redirects_and_Forwards_Cheat_Sheet) –