【发布时间】:2011-12-20 20:29:14
【问题描述】:
错误NetworkError: 405 Method Not Allowed的原因是什么
我正在使用 Web 服务,但它突然开始返回该错误。它没有维护,所以它不会得到修复。我很好奇我是否可以为此做点什么。
违规的网络服务网址是:http://jsonpdb.appspot.com/add
【问题讨论】:
错误NetworkError: 405 Method Not Allowed的原因是什么
我正在使用 Web 服务,但它突然开始返回该错误。它没有维护,所以它不会得到修复。我很好奇我是否可以为此做点什么。
违规的网络服务网址是:http://jsonpdb.appspot.com/add
【问题讨论】:
应用不支持您尝试在该 URL 上使用的方法(GET/POST/HEAD 等)。您确定 API 希望您使用您在该 URL 上使用的方法吗?
【讨论】:
最常见的原因是在响应中使用了错误的“获取”和“发布”。验证正在发送的内容以及正确的方法出现在您的处理程序中。
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):
...
提供代码链接会很有帮助。
【讨论】:
我知道这是一个旧线程,但我没有为我自己的需要找到满意的答案。特别是如果您正在处理 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();
【讨论】: