def __call__(self, environ, start_response):
req = Request(environ, shallow=True)
host = req.headers.get('Host')
if host not in ('metadata.google.internal', '169.254.169.254' , 'metadata'):
status = '403 Forbidden'
response_headers = [('Content-Type','text/html; charset=UTF-8')]
start_response(status, response_headers)
return ['Host Header nust be one of (metadata.google.internal, metadata, 169.254.169.254)']
req_path = environ.get('PATH_INFO')
metadata_flavor = req.headers.get('Metadata-Flavor')
if (metadata_flavor is None and req_path != '/'):
status = '403 Forbidden'
response_headers = [('Content-Type','text/html; charset=UTF-8')]
start_response(status, response_headers)
logging.error("Metadata-Flavor: Google header not sent for: " + environ.get('PATH_INFO'))
t = Template('''<p>Your client does not have permission to get URL
<code>{{ err_path }}</code> from this server. Missing Metadata-Flavor:Google header. ''')
return [str(t.render(err_path= environ.get('PATH_INFO')))]
return self.app(environ, start_response)
# Make sure every response has these headers (which is what gce does)
gce_metadata_server.py 文件源码
python
阅读 18
收藏 0
点赞 0
评论 0
评论列表
文章目录