2011-11-03 13 views
5

क्या त्रुटि के लिए कारण बनता है NetworkError: 405 Method Not AllowedGoogle अनुप्रयोग इंजन: 405 विधि की अनुमति नहीं

मैं एक वेब सेवा और अचानक यह है कि त्रुटि लौट रहा शुरू कर दिया उपयोग कर रहा था कर रहे हैं। यह बनाए रखा नहीं है, इसलिए यह तय नहीं होगा। मैं उत्सुक हूं अगर मैं इसके बारे में कुछ कर सकता हूं।

हमलावर वेब सेवा यूआरएल है: http://jsonpdb.appspot.com/add

उत्तर

8

विधि (GET/पोस्ट/HEAD आदि) आप उस URL पर उपयोग करने के लिए कोशिश कर रहे हैं एप्लिकेशन द्वारा समर्थित नहीं है। क्या आप सुनिश्चित हैं कि एपीआई आपको उस यूआरएल पर उपयोग की जाने वाली विधि का उपयोग करने की अपेक्षा करता है?

+0

हाँ,: विशेष रूप से यदि आप एक AJAX प्रतिक्रिया संभाल रहे हैं, तो आप स्पष्ट रूप से अपने कस्टम WebApp2 हैंडलर के प्रेषण में उनके लिए जाँच करके विकल्प अनुरोध अनुमति देने के लिए कर सकते हैं। आप देख सकते हैं कि ऐड का उनका उदाहरण अब उनके एपीआई पर टूटा हुआ है: http://jsonpdb.appspot.com – mkoryak

6

सबसे आम कारण प्रतिक्रिया के लिए गलत 'get' बनाम 'पोस्ट' का उपयोग कर रहा है। सत्यापित करें कि क्या भेजा जा रहा है और यह कि आपके हैंडलर में सही विधि दिखाई देती है।

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

एक अन्य आम मुद्दा मुख्य प्रेषण अनुभाग यूआरएल को पार्स कर रहा है, लेकिन फिर उन्हें प्राप्त में आपूर्ति नहीं/पोस्ट/हटाने

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

regex उसमें () ... कि एक है है जैसे 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(); 
संबंधित मुद्दे