【问题标题】:How to resolve a HTTP/1.1 POST 405 Method Not allowed error如何解决 HTTP/1.1 POST 405 Method Not allowed 错误
【发布时间】:2021-01-21 22:38:42
【问题描述】:

我正在构建一个网页,目前卡在代码的登录页面部分。每当我尝试登录时,我都会收到此错误警告:“HTTP/1.1 POST /check-login”- 405 Method Not Allowed。我已经检查了几次我的代码,并将其与我正在关注的讲座视频进行了比较,但到目前为止我所尝试的一切似乎都无法让我克服这个错误。我对自学编码还很陌生,所以答案可能很简单,我只是看不到它。该项目适用于多种编程语言,并且位于多个不同的页面上。大部分代码是 Python 和 HTML,其中一页是 java 脚本。我认为 java 脚本页面可能是导致卡顿的原因,因为这是检查登录代码的主要设置位置。如果有人可以帮助我确定问题出在哪里以及如何纠正它,我将不胜感激。这些是我认为与正在发生的问题相关的代码部分。

1.

  $(document).on("submit", "#login-form", function(e){
        e.preventDefault();

        var form = $(this).serialize();
        $.ajax({
            url: '/check-login',
            type: 'POST',
            data: form,
            success: function(res){
                if(res == "error"){
                    alert("Could not log in");
                }
                else{
                    console.log("Login as ", res);
                    window.location.href = "/";
                }
            }
        });
    });
import pymongo
from pymongo import MongoClient
import bcrypt


class LoginModel:
    def __init__(self):
        self.client = MongoClient()
        self.db = self.client.codewizard
        self.Users = self.db.users

    def check_user(self, data):
        user = self.Users.find_one({"username": data.username})

        if user:
            if bcrypt.checkpw(data.password.encode(), user["password"]):
                return user
            else:
                return False
        else:
            return False
  1. 类检查登录: def 帖子(自己): 数据 = web.input() 登录 = LoginModel.LoginModel() isCorrect = login.check_user(data)

          if isCorrect:
              return isCorrect
          return "error"
    

【问题讨论】:

  • 你没有在 python 代码中向我们展示你的路由定义。不受支持的方法意味着您的路由可能绑定到 GET 而不是 POST 之类的东西。
  • 这就是你的意思吗:从模型导入 web import RegisterModel, LoginModel urls = ( '/', 'Home', '/Login', 'Login', '/register', 'Register' , '/postregistration', 'PostRegistration', '/check-login', 'CheckLogin')

标签: javascript python html http-1.1


【解决方案1】:

尝试在 AJAX 请求中的 URL 中添加斜杠:

$.ajax({
  url: '/check-login/',
  ...

【讨论】:

  • 然后确保您的 API 确实被称为“检查登录”。也许试试“check_login”
猜你喜欢
  • 2014-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-20
  • 1970-01-01
相关资源
最近更新 更多