2012-07-27 85 views
3

我執行一個http 刪除從Javascript到Java Web應用程序的請求。該網絡應用程序使用Jersey來發送網址。棘手的是,我正在使用包含正斜槓的路徑參數(例如「XX/6666」)。當我在Jetty(maven插件)中運行時,它工作正常,但是當我在我的生產服務器上運行時(Tomcat),它不會,即我得到一個。在HTTP請求中轉義斜槓

正斜槓用%2F所以我的請求的URL看起來像

DELETE http://.../4776/shipmentOrders/XX%2F6666

難道這允許在HTTP規範逃出來的,是有可能的Jetty和Tomcat不同的方式解釋這些?

+0

您能顯示請求代碼嗎? – Raffaele 2012-07-27 07:51:40

回答

10

Tomcat(在我認爲的版本5,6和7中)有意防止在路徑中使用%2f來防止目錄遍歷攻擊。據稱您可以通過設置org.apache.tomcat.util.buf來關閉此保護。 UDecoder.ALLOW_ENCODED_SLASH =真。我沒有親自測試過這個,但看到網絡上的其他人聲稱已經爲他們解決了這個問題。但是,請注意,Tomcat前面的Web服務器也可能攔截並重寫URL,並自動將%2f解碼爲正斜槓。

參考:http://tomcat.apache.org/tomcat-7.0-doc/config/systemprops.html

+0

我已經解決了這個問題,所以我不會驗證這一點,但我會接受你的答案,因爲它非常完整。 – 2012-08-22 14:33:17

2

是的,對於這兩個:它是允許的,但有些服務器可能因安全原因拒絕請求。