【问题标题】:google app engine: 405 method not allowed谷歌应用引擎:不允许使用 405 方法
【发布时间】:2011-12-20 20:29:14
【问题描述】:

错误NetworkError: 405 Method Not Allowed的原因是什么

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

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

【问题讨论】:

    标签: html google-app-engine


    【解决方案1】:

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

    【讨论】:

    • 是的,它在 api 中。您现在可以看到他们的 add 示例在他们的 api 上被破坏了:jsonpdb.appspot.com
    【解决方案2】:

    最常见的原因是在响应中使用了错误的“获取”和“发布”。验证正在发送的内容以及正确的方法出现在您的处理程序中。

    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):
            ...
    

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

    【讨论】:

      【解决方案3】:

      我知道这是一个旧线程,但我没有为我自己的需要找到满意的答案。特别是如果您正在处理 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();
      

      【讨论】:

        猜你喜欢
        • 2012-08-13
        • 1970-01-01
        • 1970-01-01
        • 2011-09-01
        • 2012-06-29
        • 2013-03-13
        • 2016-03-08
        • 2014-09-19
        • 2016-04-20
        相关资源
        最近更新 更多