如何在标题中的每个页面上强制使用https

时间:2015-09-15 23:17:44

标签: html django .htaccess

有没有办法在不调整.htaac​​cess的情况下将网页的访问者从http重定向到https?

2 个答案:

答案 0 :(得分:0)

您应该强制客户端始终使用HTTP严格传输安全性(HSTS)标头请求HTTPS:

// Use HTTP Strict Transport Security to force client to use secure connections only
$use_sts = true;

// iis sets HTTPS to 'off' for non-SSL requests
if ($use_sts && isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') {
    header('Strict-Transport-Security: max-age=31536000');
} elseif ($use_sts) {
    header('Location: https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'], true, 301);
    // we are in cleartext at the moment, prevent further execution and output
    die();
}

请注意,HSTS在大多数现代浏览器中都受支持,但不是通用的。因此,如果用户最终使用HTTP,则上述逻辑会手动重定向用户,无论支持如何,然后设置HSTS标头,以便在可能的情况下应由浏览器重定向其他客户端请求。

答案 1 :(得分:0)

如果将SECURE_SSL_REDIRECT设置为True,SecurityMiddleware将永久(HTTP 301)将所有HTTP连接重定向到HTTPS。