2011-11-03 38 views
5

私は、Webサービスと、それはそのエラーを返す始めた突然のすべてを使用していたエラーNetworkError: 405 Method Not AllowedGoogle App Engineの:

の原因は何を許可されていない405の方法。それは固定されないように維持されていません。私がこれについて何かできるかどうか不思議です。

問題のあるWebサービスのURLは次のとおりです。http://jsonpdb.appspot.com/add

答えて

8

方法(GET/POST/HEADなど)あなたがそのURLに使用しようとしているが、アプリケーションによってサポートされていません。そのURLで使用しているメソッドをAPIが使用することを期待していますか?

+0

はい、そのAPIに:あなたはAJAXの応答を処理している場合は特に、あなたは明示的にカスタムwebapp2をハンドラの派遣でそれらをチェックしてOPTIONS要求を許可することができます。 addの例がapiで壊れているのが見えます:http://jsonpdb.appspot.com – mkoryak

6

よくある原因は、応答に間違った 'get' vs 'post'を使用していることです。何が送信されているか、ハンドラに正しいメソッドが表示されていることを確認します。

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

もう1つの一般的な問題は、メインディスパッチセクションでは、URLを解析したが、その後、GETでそれらを供給されていない/ポスト/正規表現はそれで()が...それはありますしてい

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

を削除以下のようなURLパスでパラメータ:/upload/filenameコードへのリンクを供給

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

は参考になります。

2

私はこれが古いスレッドであることを知っていますが、私は自分自身の必要性についての質問に対して満足のいく答えを見つけられませんでした。

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