Google应用程序引擎模块间通信授权(python)
引用我的问题是,在报告中说: 您可以配置任何手动或基本缩放模块以接受 通过将其处理程序限制为 仅允许管理员帐户,并为 模块配置文件中的相应处理程序。用这个 限制到位,从应用程序中的任何其他模块获取任何URL 将由App Engine和任何请求自动验证 申请表中未注明的内容将被拒绝 这正是我的模块api1的配置。在我的app.yaml文件中,我有:Google应用程序引擎模块间通信授权(python),python,google-app-engine,authentication,module,communication,Python,Google App Engine,Authentication,Module,Communication,引用我的问题是,在报告中说: 您可以配置任何手动或基本缩放模块以接受 通过将其处理程序限制为 仅允许管理员帐户,并为 模块配置文件中的相应处理程序。用这个 限制到位,从应用程序中的任何其他模块获取任何URL 将由App Engine和任何请求自动验证 申请表中未注明的内容将被拒绝 这正是我的模块api1的配置。在我的app.yaml文件中,我有: # can accept requests from other modules. # with login: admin and they are
# can accept requests from other modules.
# with login: admin and they are authenticated automatically.
- url: /.*
script: _go_app
login: admin
我现在正尝试从同一应用程序中的不同模块使用urfetch.fetch()方法进行文档中建议的服务调用,我的实现是:
from google.appengine.api import urlfetch, modules, app_identity
from rest_framework.response import Response, status
@api_view(['POST'])
def validate_email(request):
url = "http://%s/" % modules.get_hostname(module="api1")
payload = json.dumps({"SOME_KEY":"SOME_VALUE"})
appid = app_identity.get_application_id()
result = urlfetch.fetch(url + "emails/validate/document",
follow_redirects=False,
method=urlfetch.POST,
payload=payload,
headers={"Content-Type":"application/json")
return Response({
'status_code': result.status_code,
'content': result.content
}, status=status.HTTP_200_OK)
根据文档,指定了follow_redirects=False,fetch()将自动在我的调用中插入一个标题(我甚至尝试显式添加它),标题为“X-Appengine-Inbound-Appid”:my-APP-ID。
不幸的是,作为fetch调用的结果,我得到了一个302重定向,如果我遵循它,它将重定向到身份验证表单。这在开发服务器和生产环境中都会发生
您能告诉我如何在我的验证\u email方法中调用我的api1服务(属于同一应用程序中的不同模块)吗?
由于文档中建议的方法似乎不起作用,是否还有其他方法来验证调用
谢谢如文所述,这是一个正在跟踪的问题。所以每个人都可以去那里查看更新
与此同时,我解决了从app.yaml中删除登录名:admin
的问题,并在我的服务处理程序中手动检查了标题X-Appengine-Inbound-Appid
及其值的存在。如前所述,这是一个跟踪问题。所以每个人都可以去那里查看更新
与此同时,我解决了从app.yaml中删除登录名:admin
的问题,并在我的服务处理程序中手动检查了头X-Appengine-Inbound-Appid
的存在及其值