正如我在https://stackoverflow.com/q/35060446/487313中所说的,我正在研究一个php代理。实际上我有一个带有注释的servlet:
@MultipartConfig
public class MyServlet extends HttpServlet {
此外,在doPost中我有:
Collection<Part> lesParts = request.getParts();
奇怪的是,当我通过我的代理时,我总是得到一个空集合,而直接从我的表单中进行正确的事情
也就是说:
<form name="mon-formulaire1" id="proxyform" action="newPrxi.php?proxy_url=http://localhost:8888/testServlet/myservlet.html" method="post" enctype="multipart/form-data" >
不起作用
和
<form name="mon-formulaire1" id="proxyform" action="http://localhost:8888/testServlet/myservlet.html" method="post" enctype="multipart/form-data" >
没问题。
实际上我正在使用Vstudio上的php(端口30645)和Eclipse下的Tomcat 7上的servlet(端口8888)处理我的localhost。
我使用request.getInputStream();
并使用Enumeration headerNames = request.getHeaderNames();
遍历标题并且我看不出没有(直接来自表单)和ng(通过代理)的情况之间没有区别。通常会对所有这些代码进行注释,以避免在读取流后出现空请求....
我的表单有两个输入文本和两个文件输入元素,当我uplpoad文件时它不会改变任何东西(当部件列表不为空时文件得到很好的保存)。
我的标题如下:
Key: content-type, Value: multipart/form-data; boundary=----WebKitFormBoundaryHEJ3XuT0gdC8RG4X
Key: connection, Value: keep-alive
Key: accept-language, Value: fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
Key: host, Value: localhost:8888
Key: accept, Value: text/plain, */*; q=0.01
Key: content-length, Value: 105639
Key: origin, Value: http://localhost:30645
Key: user-agent, Value: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36
Key: accept-encoding, Value: gzip, deflate
Key: referer, Value: http://localhost:30645/index.html?XDEBUG_SESSION_START=76F0F204
任何帮助都非常受欢迎....:)
答案 0 :(得分:0)
如果servlet在代理后面运行时无法返回多部分请求的部分,则最可能的解释是代理添加或删除了使请求不正确或不可解析的内容。
在评论对话中检测到的情况确实如此。