与405错误相关的其他问题对我来说都没有意义。我正在运行Apache Tomcat 9,默认安装。在开发过程中,客户端位于同一台计算机上。我仅在POST到Servlet时收到405错误。当我将servlet转到JSP页面时,它可以正常工作,如果我在servlet上使用GET,它也可以工作。我正在使用AJAX通话。这是代码:
function AJAXcommit(url, params) { var xmlHttp=GetXmlHttpObject(); xmlHttp.open("POST", url, true); xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xmlHttp.onreadystatechange = function() { if(xmlHttp.readyState == 4 && xmlHttp.status == 200) { alert(xmlHttp.responseText); } }; xmlHttp.send(params); }
从javascript函数调用:
AJAXcommit("setDefault.jsp","p1=a&p2=b");
工作正常,但是当我使用(几乎完全相同-我从另一个创建了一个)Servlet时,出现405错误:
AJAXcommit("setDefault","p1=a&p2=b");
通过GET调用servlet可以正常工作,例如独立运行(也可以通过使用GET的不同AJAX调用从我的主页开始,):
http://localhost:8080/myproject/setDefault?p1=a&p2=b
servlet代码只有几行特定于servlet的代码:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String retVar=""; String p1 = request.getParameter("p1"); String p2 = request.getParameter("p2"); PrintWriter out = response.getWriter(); // do something with p1 and p2 out.println("Result="+retVar); } Same for doPost () // which solved the problem .....
我阅读了有关可能需要的授权的内容?但是那将是什么样的授权?我是否需要为此设置Tomcat用户?我有3个不同的servlets这个问题。使用GET或将其转换为JSP即可解决。但是我必须考虑安全性,因此我宁愿在Servlet上使用POST。
与405错误相关的其他问题对我来说都没有意义。我正在运行Apache Tomcat 9,默认安装。在开发过程中,客户端位于同一台计算机上。我得到405 ...
我找到了答案-我专注于客户端,忽略了服务器。感谢@BalusC的评论。 “ doPost()”丢失了。添加后使其生效。