Google App Engine: метод 405 не допускается - PullRequest
5 голосов
/ 03 ноября 2011

Каковы причины ошибки NetworkError: 405 Method Not Allowed

Я использовал веб-сервис, и он неожиданно начал возвращать эту ошибку.его не поддерживают, поэтому он не будет исправлен.Мне любопытно, могу ли я что-то с этим сделать.

Ответы [ 3 ]

8 голосов
/ 03 ноября 2011

Метод (GET / POST / HEAD и т. Д.), Который вы пытаетесь использовать для этого URL, не поддерживается приложением.Вы уверены, что API ожидает, что вы будете использовать метод, который вы используете для этого URL?

6 голосов
/ 03 ноября 2011

Самая распространенная причина - использование неправильного 'get' vs 'post' для ответа. Проверьте, что отправляется, и что в вашем обработчике указан правильный метод.

class MainHander(webapp.RequestHandler):
    def get(self):
        ...
    def post(self):
        ....
    def delete(self):
        ....

Еще одной распространенной проблемой является наличие URL-адреса для разбора в главном разделе рассылки, но затем не указывайте их в get / post / delete

def main():
    application = webapp.WSGIApplication(
        [   (r'/upload/([^/]+)?/?', UploadFileHandler),

В этом регулярном выражении содержится () ... это параметр в пути URL, например: /upload/filename

class UploadFileHandler(webapp.RequestHandler):
    def post(self, filename):
        ...

Было бы полезно указать ссылку на код.

2 голосов
/ 25 августа 2014

Я знаю, что это старая ветка, но я не нашел удовлетворительного ответа на вопрос для собственных нужд.Особенно если вы обрабатываете ответ AJAX, вы можете явно разрешить запросы OPTIONS, проверив их при отправке вашего собственного обработчика WebApp2:

class MyHandler(webapp2.RequestHandler):
    def __init__(self, request, response):
        self.initialize(request, response)

    #The dispatch is overwritten so we can respond to OPTIONS
    def dispatch(self):
        self.response.headers.add_header("Access-Control-Allow-Origin", "*")
        if self.request.method.upper() == 'OPTIONS':
            self.response.status = 204
            self.response.write('')
        else:
            super(MyHandler, self).dispatch();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...