我想知道是否有办法验证请求(比如 POST 或 GET)是通过 https 发出的,
我需要在webapp2.RequestHandler中检查这一点,以使每个不是通过 https 发送的请求都无效
此致
我想知道是否有办法验证请求(比如 POST 或 GET)是通过 https 发出的,
我需要在webapp2.RequestHandler中检查这一点,以使每个不是通过 https 发送的请求都无效
此致
检查 self.request.environ['HTTPS'] == 'on' # 或 'off'。如果您只使用 https,请考虑使用secure:always
如下app.yaml
:
handlers:
- url: /.*
script: main.app
secure: always
上面提供的使用 app.yaml 配置的答案效果很好,但在某些情况下,您需要检查 Python 代码本身的粒度,我相信这是您所要求的,因为您想检查 RequestHandler。
这是您可以在 RequestHandler 中执行的操作:
if self.request.scheme.lower() != 'https':
self.abort(403)
else:
# handle your request here, you know it's secured!
如果您使用的是 GAE Flex(secure:
指令不起作用),我发现检测到这一点的唯一方法(我自己重定向 http->https)是检查是否request.environ['HTTP_X_FORWARDED_PROTO'] == 'https'