繁体   English   中英

接受来自外部域的POST请求? (Google App Engine)

[英]Accept POST requests from external domain? (Google App Engine)

我似乎无法让我的应用接受来自其他域的POST请求。 我正在尝试在我的应用程序中创建一个PayPal IPN处理程序。

当用户单击我页面上的“订阅”按钮时,贝宝将IPN(POST)发送到我的IPN处理程序。

我可以在AppEngine日志中看到已收到POST请求,但该请求为空(例如,无参数,logging.debug消息未显示在日志中,等等)。

因此,我通过应用程序中对其进行POST来测试我的处理程序,该处理程序可以按预期工作。

我假设这是一种安全功能,不接受来自外部来源的POST? 如果是这样,我如何使我的应用程序接受来自PayPal的POST?

这是我的处理程序当前的样子(仅用于测试):

class BaseHandler(tornadotoad.mixin.RequestHandler, tornado.web.RequestHandler):
    # ...

class IPNHandler(BaseHandler):
    def post(self):
        if is_ajax(self.request):
            logging.info('AJAX')
        logging.info(self.request.arguments)
        self.write("This is the IPN Handler\n'")
        self.write(self.request.arguments)
        return

提前致谢。

PS我正在使用PayPal的沙盒测试工具来发送IPN

我发现了我的错误。 我将处理程序的URL与其他具有login: required URL一起放置在app.yaml

我已解决此问题,现在PayPal的IPN正在通过。

感谢大家!

这里有一些预感。

  1. 也许“ / ipn”没有被路由到IPNHandler。 也许是另一个不赞成使用的处理程序?

  2. 也许您在日志中查看的应用程序版本与您拥有的应用程序版本不同。 也许您可以部署代码的新版本并针对新代码进行测试。

  3. 也许POST请求Paypal发送给您没有参数。

PS从贝宝(Paypal)端了解有关您如何执行测试的更多信息,显示代码的其他相关部分,以及任何其他相关信息都可以提供帮助。 :)

只是预感,我可能不在这里,但是对于龙卷风,我似乎无法在文档中找到该名称的方法或属性...

至少对于webapp,我认为arguments是一个实例方法:

 logging.info(self.request.arguments())

请参阅此处的文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM