google app engine _method? - PullRequest
       3

google app engine _method?

1 голос
/ 12 сентября 2010

Как я могу передать тело запроса моим представлениям?

class RestHTTPMiddleware(object):
  def __init__(self, app):
    self.app = app

  def __call__(self, environ, start_response):
    request = Request(environ)
    environ['wsgi.input'] = StringIO.StringIO(request.body)

    method = webapp.Request(environ).get('_method')

    if method:
      environ['REQUEST_METHOD'] = method.upper()

    return self.app(environ, start_response)

при тестировании:

def put(self):
    logging.info("spot put %s", self.request.get("name"))

регистрируется следующее: "пятно положено", но беззначение.

вот как это реализовано:

def main():  
  app = webapp.WSGIApplication([
    (r'/spot/new/$', Spot),
    ],
   debug=True)
  # run_wsgi_app(application)
  wsgiref.handlers.CGIHandler().run(RestHTTPMiddleware(app))

1 Ответ

0 голосов
/ 05 марта 2011

Думаю, вы почти с этим кодом. Вы пытались проверить, работает ли он, если вы запускаете fp.seek(0) после создания экземпляра запроса?

Я также должен отметить, что это опасный хак! Это позволяет мне обмануть ваш веб-сервер, заставив его поверить, что <img src="http://yourserver.com/?_method=POST&delete_account=1"> является законным запросом POST от пользователя, который просматривает мой сайт. Проще говоря: это опасно с точки зрения безопасности. Не делайте этого, если не уверены, что у вас есть другие механизмы, которые противодействуют этому ящику Пандоры с кошмарами CSRF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...