Tajuk boleh ditulis semula sebagai: Dalam aplikasi sisi pelayan (seperti PHP, Ruby, Python, dll.), adakah mungkin untuk membaca bahagian yang dicincang URL?
P粉145543872
P粉145543872 2023-08-20 20:10:37
0
2
497
<p>Andaikan URL ialah: </p> <pre class="brush:php;toolbar:false;">www.example.com/?val=1#part2</pre> <p>PHP boleh menggunakan tatasusunan GET untuk membaca pembolehubah permintaan <code>val1</code>. </p> <p>Adakah nilai cincang<kod>bahagian2</kod> Atau bolehkah ia hanya dikendalikan oleh penyemak imbas dan JavaScript? </p>
P粉145543872
P粉145543872

membalas semua(2)
P粉724256860

Ujian mudah, lawati 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 -

Permintaan yang diterima oleh pelayan tidak mengandungi apa yang mengikuti simbol # - apa yang mengikuti simbol # hanyalah carian utama pada klien.

Anda boleh menggunakan javascript untuk mencari nama sauh yang digunakan dalam URL, contohnya:

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

Jika anda sudah mempunyai rentetan URL yang mengandungi serpihan, fungsi parse_url() dalam PHP boleh digunakan (http://codepad.org/BDqjtXix):

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

输出:fizzbuzz

Tetapi saya tidak fikir PHP akan menerima maklumat serpihan kerana ia hanya wujud di bahagian pelanggan.

P粉360266095

Masalah utama ialah penyemak imbas tidak akan menghantar permintaan dengan bahagian serpihan. Bahagian serpihan dihuraikan terus dalam penyemak imbas. Oleh itu, ia boleh diakses melalui JavaScript.

Apa pun, anda boleh menggunakan parse_url() untuk menghuraikan URL ke bahagiannya, termasuk bahagian serpihan, tetapi jelas sekali itu bukan kes anda.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan