一尘不染

utf-8网址问题

tomcat

我有一个运行的tomcat(7)服务器,通过它我尝试通过http访问一些公共文件。文件系统上的某些文件中包含特殊字符。找到那些没有那些特殊字符的字符。其他的则给出404。例如:

http:// localhost:9090 / processed /
transcoded/

Csángó_TÖMEGKERESZTELŐVEL_EGYBEKÖTÖTT_búcsú_Istensegítsfalvá20111053491309424029417_extracted.mp3“

从我发现url中的utf-8应该不是问题。我尝试对文件名使用url转义功能,结果是:

http:// localhost:9090 / processed / transcoded /
Cs%c3%a1ng%c3%b3_T%c3%96MEGKERESZTEL%c5%90VEL_EGYBEK%c3%96T%c3%96TT_b%c3%bacs%c3%ba_Istenseg%c3%adtsfalv
%%
c3%a120111053491309424029417_extracted%2emp3

…但是那似乎也没有解决任何问题。接下来要尝试什么?我不知道问题是什么。可能与Tomcat设置有关吗?


阅读 228

收藏
2020-06-16

共1个答案

一尘不染

你有URIEncoding="UTF-8"你的<Connector?如果是,这就是我要做的:

  1. 创建一个测试Web应用程序,该应用程序具有一个过滤器,可拦截所有对 /processed/transcoded/*
  2. 在该过滤器上放置一个断点,看看会得到什么。解码时文件名有意义吗?
  3. 尝试java.io.File使用此路径打开一个新/home/someuser/files/...文件(显然是在本地位置之前,例如并假定文件在此位置)。

我认为tomcat的功能不超过上面列出的功能。

另一种选择是调试Tomcat本身。

2020-06-16