【发布时间】:2013-06-10 06:06:09
【问题描述】:
对于我正在创建的 Flask 应用程序中的某些页面,我有一个 HTTPS 重定向系统,如下所示。
def requires_https(f, code=302):
"""defaults to temp. redirect (301 is permanent)"""
@wraps(f)
def decorated(*args, **kwargs):
passthrough_conditions = [
request.is_secure,
request.headers.get('X-Forwarded-Proto', 'http') == 'https',
'localhost' in request.url
]
if not any(passthrough_conditions):
if request.url.startswith('http://'):
url = request.url.replace('http://', 'https://')
r = redirect(url, code=code)
return r
return decorated
如果您不请求页面的 HTTPS 版本,它会将您重定向到该页面。我想为此服务编写单元测试。我写了一个确保您被重定向到 HTTPS 版本(基本上检查 301 或 301)。我想测试一下,如果您正在请求页面的 https 版本并且已经在 https 上,它不会重定向您(基本上,对于 200)。如何让 Flask 在单元测试中发送 https 请求?
【问题讨论】:
-
你有没有想过这个问题?
-
@nu_everest 这是很久很久以前的事了,我没有尝试 Belrog 的回答,因为项目已经结束。 IIRC 我们最终获得了测试环境的 HTTPS 证书并编写了一个快速的手动测试......并不理想。