对于我正在创建的 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 请求?