Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将视图限制为仅可由App Engine内部网络访问_Python_Google App Engine_Flask - Fatal编程技术网

Python 将视图限制为仅可由App Engine内部网络访问

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

我想找到一种方法,将视图(请求处理程序)限制为仅从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 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。