一个 Datasette 插件,将所有非 HTTPS 请求重定向到 HTTPS
在与 Datasette 相同的环境中安装此插件。
$ datasette install datasette-redirect-to-https
安装后,对 http://
协议的传入 GET 请求将通过 301 重定向到等效的 https://
页面。
非 GET 的 HTTP 方法将收到 405 Method Not Allowed HTTP 错误。
一些托管服务提供商会替您处理 HTTPS,然后通过 HTTP 将请求传回您的应用服务器。
为了使此插件正常工作,它需要检测到原始传入请求是通过 HTTP 发送的。
此类托管服务提供商通常会设置一个额外的 HTTP 头部,例如 x-forwarded-proto: http
,用于标识原始协议。
您可以在 metadata.json
中使用以下插件配置,将 datasette-redirect-to-https
配置为遵守此头部:
{
"plugins": {
"datasette-redirect-to-https": {
"if_headers": {
"x-forwarded-proto": "http"
}
}
}
}
如果传入请求包含 x-forwarded-proto: http
请求头部,上述示例将重定向到 https://
。
如果列出了多个 if_headers
,只要其中任何一个匹配,就会发生重定向。
要在本地设置此插件,首先检出代码。然后创建一个新的虚拟环境
cd datasette-redirect-to-https
python3 -m venv venv
source venv/bin/activate
现在安装依赖项和测试依赖项
pip install -e '.[test]'
运行测试
pytest