Bir URL’deki işaret yüzdesi neden HTTP 400 Kötü İsteği hatasına neden oluyor?


22

Web tarayıcımda bir web sayfasının URL’sini yanlış yazarken tesadüfen rastlamıştım.

Ziyaret neden http://example.com/% HTTP 400 Kötü İstek hatasının atılmasına neden olur? Sunucu yüzde işaretinden sonra veya öncesinde başka bir şey mi bekliyor?

Apache ve Nginx sunucuları için olmuş gibi görünüyor.


Yanıtlar:


31

Kısa cevap

Başına RFC 3986 , çıplak % karakter geçerli değil URI sözdizimi; bunu iki anlamlı ifade etmelidir. onaltılık basamak.

Uzun cevap

HTTP Aldığınız durum kodu 4xx sınıf:

4xx: Client Error - The request contains bad syntax or cannot be fulfilled

Kaynak: Köprü Metni Aktarım Protokolü (HTTP) Durum Kodu Kayıt Defteri

Özellikle, kod 400 tarafından tanımlanır İnternet Mühendisliği Görev Gücü (IETF) içinde RFC 2616:

10.4.1 400 Kötü İstek

Hatalı biçimlendirilmiş sözdizimi nedeniyle istek sunucu tarafından anlaşılamadı. Müşteri, talebi değişiklik yapmadan tekrar etmemelidir.

Kaynak: RFC 2616 - Köprü Metni Aktarım Protokolü - HTTP / 1.1

Vikipedi alıntı (cesur vurgu benim):

Bir URI’de izin verilen karakterler ayrılmış veya koşulsuz ( veya yüzde kodlamanın bir parçası olarak yüzde karakteri ).

Kaynak: Yüzde kodlama - URI'da yüzde kodlama

Bir hazır bilgi eklemek istiyorsanız % sembol, yüzde kodlu gösterimini kullanmanız gerekir: %25.

daha fazla okuma


Anlamadım. Eğer '%' işaretini '% 25' ile maskeleyebilirsem, dosya hala sunulmayacak ancak senaryomuzda 400 hatası olacak. (Apache - & gt; JKMount - & gt; Tomcat)
fiffy

9

Yüzde işareti, normalde url'de desteklenmeyen bir karakter girmek içindir. Örneğin,% 20 bir boşlukla aynıdır.


4
Ve yüzde karakterin kendisini eklemek %25
Robotnik

bir + Boşluk kodlamanın kısayol yoludur. Gerçek bir artı işareti istiyorsanız, onaltılık kodunu kullanın,% 2B.
Phil Perry

3
+, yalnızca sorgu dizesindeki bir alan için doğru kodlamadır. % 20, URL içinde başka bir yerde doğru kodlamadır.
Eden Townsend
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.