首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

AJAX POST 返回 405 Method Not Alloved:Servlet doPost 中呼叫 super.doPost 導致

     編輯:程式設計綜合問答

錯誤現象

前端 $.ajax({type:"POST", ...}) 送出請求,後端 doPost 收到資料並處理,但瀏覽器回報 405 Method Not Allowed。

問題程式碼

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    super.doPost(req, resp);   // <-- 罪魁禍首
    // ... 後續邏輯
}

原因

HttpServlet 預設 doPost 實作會直接回傳 405 (不支援 POST)。呼叫 super.doPost() 會**先送出 405 回應**,導致後續 PrintWriter 寫入失敗、連線關閉,瀏覽器收到錯誤狀態碼。

修正

**移除 super.doPost(req, resp);**,直接撰寫業務邏輯:

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    resp.setCharacterEncoding("UTF-8");
    resp.setContentType("application/json;charset=UTF-8"); // 回傳 JSON 建議
    // 讀取參數、處理邏輯
    PrintWriter pw = resp.getWriter();
    pw.print(jsonResult);
    pw.flush();
}

補充

  • 若繼承自自訂基底 Servlet,確認父類 doPost 是否已處理回應。
  • 前端 dataType:"json" 需後端回傳合法 JSON 字串,而非物件 toString()。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved