對於一個客戶,我需要編寫一個可以在表單發佈中打印值的Servlet。形式託管在其他服務器上,有些看起來是這樣的:跨站點tomcat表單發佈不起作用
<form action="http://myserver/myServlet" method="POST">
<input type="text" id="someName" value="someInterestingValue"/>
<input type="submit" value="submit" />
</form>
我提供一個Tomcat 5.0.28服務器上的Java JDK 1.4運行的,所以我做了一個簡單的servlet:
public class ProxyServlet extends HttpServlet {
public void doPost(HttpServletRequest req,
HttpServletResponse res)
throws ServletException, IOException {
PrintWriter out = res.getWriter();
Enumeration a =req.getAttributeNames();
while (a.hasMoreElements()){
String attrname = (String) a.nextElement();
out.println(attrname+"="+req.getAttribute(attrname)+"<br/>");
}
out.close();
}
}
當我通過URL訪問servlet時,所有內容都與預期相符。當我發送帶有一些參數的GET請求時,我可以在doGet()方法的調試器中看到這些屬性(方法被忽略)。
但是,在doPost()中,我的表單字段似乎丟失了。我查看了Tomcat日誌文件,沒有記錄任何特別的東西。我試圖添加crossdomain.xml到一些目錄,但沒有找到一種方法來改變這種行爲。
所以要清楚:上面列出的表單位於服務器A上。我的servlet運行在服務器B上託管的現有傳統Tomcat/Java應用程序上。當表單類型爲「POST」時,沒有任何字段到達服務器B上的Servlet。Apache不在Tomcat的「前面」。
是否有一些配置設置我在Tomcat中缺少? 任何提示或建議在哪裏看下? 非常感謝幫助。
啊,那也錯過了我的眼睛。這太明顯了。如果你真的說getParameter()的東西也不起作用,它會有更多的幫助。不過很高興你自己解決了它。 – BalusC 2009-11-26 22:28:21
是的,我的不好,我最初有getParameter()代碼,但是我認爲我可以放鬆它,使問題縮短一點。 – Rolf 2009-11-26 22:51:29