Saya menemukan ini secara tidak sengaja ketika salah ketik URL untuk halaman web di browser web saya.
Mengapa mengunjungi http://example.com/%
menyebabkan kesalahan HTTP 400 Bad Requested untuk dilemparkan? Apakah server mengharapkan sesuatu yang lain setelah atau sebelum tanda persen?
Tampaknya terjadi untuk server Apache dan Nginx.
(Server: cloudflare-nginx) /superuser//%
(Server: Apache) http://mozilla.org/%
apache-http-server
webserver
http
nginx
iglvzx
sumber
sumber
Jawaban:
Jawaban singkat
Sesuai RFC 3986 ,
%
karakter kosong bukan sintaks URI yang valid ; itu harus diikuti oleh dua digit heksadesimal yang berarti .Jawaban panjang
The HTTP kode status Anda punya milik
4xx
kelas:Secara khusus, kode
400
ditentukan oleh Internet Engineering Task Force (IETF) di RFC 2616:Mengutip Wikipedia (cetak tebal):
Jika Anda ingin menyisipkan literal
%
simbol, Anda perlu menggunakan representasi persen-dikodekan nya:%25
.Bacaan lebih lanjut
sumber
RewriteRule (.*) xyz/$1
(di mana xyz adalah nama folder apa pun) di .htaccess, Anda harus menggandakan- enkode% sebagai% 2525.Tanda persen adalah untuk menyisipkan karakter yang biasanya tidak didukung di url. Misalnya% 20 sama dengan spasi.
sumber
%25
+
adalah cara pintas untuk menyandikan spasi. Jika Anda ingin tanda tambah nyata, gunakan kode heksnya,% 2B.