Python 将视图限制为仅可由App Engine内部网络访问
我想找到一种方法,将视图(请求处理程序)限制为仅从Google App Engine内部网络从我的视图中调用,而不是从App.yaml中调用 例如,我可以在Flask应用程序中处理入站电子邮件Python 将视图限制为仅可由App Engine内部网络访问,python,google-app-engine,flask,Python,Google App Engine,Flask,我想找到一种方法,将视图(请求处理程序)限制为仅从Google App Engine内部网络从我的视图中调用,而不是从App.yaml中调用 例如,我可以在Flask应用程序中处理入站电子邮件 @app.route('/_ah/mail/notifications@example.appspotmail.com', methods=['POST']) def inbound_notification_email(): from google.appengine.api import ma
@app.route('/_ah/mail/notifications@example.appspotmail.com', methods=['POST'])
def inbound_notification_email():
from google.appengine.api import mail
message = mail.InboundEmailMessage(request.data)
...
return '' # 200 OK
虽然我知道我可以将所有邮件处理程序放在它们自己的file/wsgi实例中,如下所示:
handlers:
- url: /_ah/mail/.+
script: inbound_mail.app
login: admin
我宁愿不这样做,因为我使用的是Flask而不是Webapp。目前,请求的工作原理与上面的设置相同,但它已公开于世
查看我的入站通知\u email()
视图中的请求,我看到请求标题中的X-App-Country
设置为ZZ
,请求的远程地址为0.1.0.20
。我知道0.x.x.x IP范围是为本地网络保留的IANA,因此检查request.remote_地址是否以“0”开头似乎是合乎逻辑的,但我不确定App Engine中的所有内部请求是否总是以这种方式处理(我想到了推送队列和xmpp)
有一件事我很惊讶地看到是
用户。当前用户\u admin()
在入站通知\u mail()
中返回False,即使在使用Webapp时要设置登录:admin
。登录管理意味着只有应用管理员才能访问处理程序,并不是说访问处理程序的人是管理员。你找到这个问题的解决方案了吗?@yoonjesung我没有找到解决方案this@SeanLynch现在不确定是否相关,但想知道你是否可以使用appengine的App-identity来处理这个@yoonjesung,但我已经离开使用这个项目一段时间了。最近我一直在使用Node.js和appengine Flexible environment。