【问题标题】:HTTP POST gives 405 error on servlet but works fine on JSP doing the sameHTTP POST 在 servlet 上给出 405 错误,但在 JSP 上也能正常工作
【发布时间】:2020-04-15 17:12:57
【问题描述】:

与 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 个不同的 servlet 有这个问题。使用 GET,或者将它们转换为 JSP 可以解决它。但我必须考虑安全性,所以我宁愿在 servlet 上使用 POST。

【问题讨论】:

  • “与 405 错误相关的其他问题对我来说没有任何意义” 但您仍然没有显示您的 doPost() 方法。到目前为止发布的所有代码都与问题无关。它们都是客户端调用,但它们都会失败并出现相同的错误,因为问题出在您的 servlet 代码中,而不是在客户端代码中。如果您包含了您的doPost() 方法的最小代码sn-p 仍然重现问题,那么我们将能够指出您的错误。
  • 不知何故我没有那样想,因为 GET 没有问题,所以我怀疑客户端的问题,但我想你是对的。我编辑了我的帖子以添加 doGet 部分。感谢您指出这一点
  • 所以,“但在 JSP 上也能正常工作” 实际上不是真的?

标签: javascript html ajax jsp servlets


【解决方案1】:

我找到了答案——我专注于客户端,而忽略了服务器。感谢@BalusC 的评论。 'doPost()' 丢失了。添加它使其工作。

【讨论】:

    猜你喜欢
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-01
    • 2011-09-30
    相关资源
    最近更新 更多