谷歌应用引擎:不允许405方法

时间:2011-11-03 03:20:15

标签: html google-app-engine

错误NetworkError: 405 Method Not Allowed

的原因是什么?

我正在使用网络服务,突然间它开始返回该错误。它没有维护,所以它不会得到修复。我很好奇我是否可以为此做些什么。

违规的网络服务网址为:http://jsonpdb.appspot.com/add

3 个答案:

答案 0 :(得分:8)

应用程序不支持您尝试在该URL上使用的方法(GET / POST / HEAD等)。您确定API希望您使用您在该网址上使用的方法吗?

答案 1 :(得分:6)

最常见的原因是对响应使用了错误的“get”vs“post”。验证发送的内容以及处理程序中是否显示了正确的方法。

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

另一个常见问题是让主调度部分解析网址,但是不能在get / post / delete中提供它们

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

正则表达式中有() ...这是url路径中的参数,如:/upload/filename

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

提供代码链接会很有帮助。

答案 2 :(得分:2)

我知道这是一个旧帖子,但我没有找到一个满意的答案来满足我自己的需要。特别是如果您正在处理AJAX响应,您可能希望通过在自定义WebApp2处理程序的分派中检查它们来明确允许OPTIONS请求:

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();