suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Der Titel kann wie folgt umgeschrieben werden: Ist es in einer serverseitigen Anwendung (wie PHP, Ruby, Python usw.) möglich, den gehashten Teil einer URL zu lesen?

<p>Angenommen, die URL lautet: </p> <pre class="brush:php;toolbar:false;">www.example.com/?val=1#part2</pre> <p>PHP kann das GET-Array verwenden, um die Anforderungsvariable <code>val1</code> zu lesen. </p> <p>Ist der Hashwert<code>part2</code> auch lesbar? Oder kann es nur vom Browser und JavaScript gehandhabt werden? </p>
P粉145543872P粉145543872460 Tage vor458

Antworte allen(2)Ich werde antworten

  • P粉724256860

    P粉7242568602023-08-21 15:01:41

    简单测试,访问 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 -

    服务器接收到的请求不包含 # 符号后面的内容 - # 符号后面的内容只是客户端上的锚点查找。

    你可以使用javascript在URL中找到使用的锚点名称,例如:

    <script>alert(window.location.hash);</script>

    如果你已经有了包含片段的URL字符串,PHP中的parse_url()函数可以使用(http://codepad.org/BDqjtXix):

    <?
    echo parse_url("http://foo?bar#fizzbuzz",PHP_URL_FRAGMENT);
    ?>
    
    输出:fizzbuzz

    但是我认为PHP不会接收片段信息,因为它只存在于客户端。

    Antwort
    0
  • P粉360266095

    P粉3602660952023-08-21 14:50:26

    主要问题是浏览器甚至不会发送带有片段部分的请求。片段部分在浏览器中直接解析。因此,它可以通过JavaScript访问。

    无论如何,您可以使用parse_url()将URL解析为各个部分,包括片段部分,但显然这不是您的情况。

    Antwort
    0
  • StornierenAntwort