2016-03-25 41 views
2

Java servletlerini çalıştıran bir Tomcat sunucum var. Şifrelenmiş kimlikleri göz önüne alındığında saklı dosyaları döndüren bir sunucu uygulaması yapmaya çalışıyorum.Bu URL neden Tomcat'tan 400 hatası veriyor?

numarası: 100

Şifreli İD + e4/E5cR/aM =

URL olarak kodlanmış numarası:% 2Be4% 2FE5cR% 2FaM% 3D

Sonuç URL: http://localhost/file/demo/%2Be4%2FE5cR%2FaM%3D

Bu bağlantıyı izlemeyi denediğimde, sunucumun koduna bile girmiyorum - sunucu şu hatayı döndürüyor: Kaynak yüklenemedi: sunucu 400 (Kötü İstek) durumuyla yanıt verdi

Bu URL'de, koduma ulaşmadan önce Tomcat'ın bunu reddetmesini sağlayan sorun nedir? Bir URL kodlayıcı olsa da koştum ve geçersiz karakterler göremiyorum. URL'nize bağlantı noktasını dahil etmedik

1): Büyük olasılıkla 2 konulardan biri yaşıyoruz

+0

URL doğru olabilir, tomcat ve web uygulamasını nasıl yapılandırdığınıza bağlıdır. Bu URL gerçekten sunucuya eşlendi mi? – Henry

cevap

5

Sen çizgi bulunduran "/"URL'de kodlanmış". Apache, potansiyel ataklardan dolayı onlara izin vermez. bunlara izin verecek şekilde Orada ayarlıyor:

System.setProperty("org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH", "true"); 

veya

-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true 

benzer post bakınız.

+0

İlgilenen herkes için şifreli kimliği atlayıp DB'ye kaydedilen rastgele oluşturulmuş bir jetonla değiştirmeye karar verdim. Bahşiş için teşekkürler. –

+0

Merhaba, lütfen bu parametreleri nerede değiştirebilirim? THANKS – JohnnySparow

+0

JVM'nize başladığınızda -D sağlayabilirsiniz, cevabı görmek için -Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH = true ya da koddaProperty ayarlayabilirsiniz. Cevap türünde –

0

. Ya liman gerekli değildir ki bu durumda port 80 Tomcat portu, yapılandırmış veya örneğin, varsayılan 8080 bağlantı noktasını dahil gerekir:

http://localhost:8080/file/demo/%2Be4%2FE5cR%2FaM%3D 

2) Şifreli ekliyoruz URL'nin kendisinin bir parçası olarak kimliği, URL eşlemelerinizde bir çeşit bir Servlet/JSP/View ile eşlenmesi ve büyük olasılıkla olması gerekmez. Tomcat benzersiz bir kimliği tanımayacak ve eşleştirmeyi işlemek için karşılık gelen işleyiciyi tanımayacaktır. '/ Dosya/demo' eşleştirilmiş sen servlet aramak niyetinde varsayarsak/JSP/kontrolör, daha büyük olasılıkla örneğin, bir istek parametre olarak kimliğini iletmek isterim:

http://localhost:8080/file/demo?id=%2Be4%2FE5cR%2FaM%3D 
İlgili konular