2011-11-03 5 views

답변

8

방법은 해당 URL에 사용하려는 (/ POST/HEAD 등 GET) 응용 프로그램을 지원하지 않습니다. 해당 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): 
     .... 

또 다른 일반적인 문제는 주요 파견 섹션 URL을 구문 분석 가진, 그러나 가져 오기에서 그들을 제공하지 않습니다/후/정규식 그것에 ()이 ... 그가 거기에있다

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(); 
관련 문제