如何仅接受HTTPS请求并拒绝HTTP?

时间:2019-01-11 04:38:15

标签: php api https

您好,我的网站托管在Hostinger上,并且我启用了该网站来强制执行HTTPS,因此当人们编写http://example.com时,它会转到https://example.com。 我有一个API,可以处理我程序中的POST。 我已经有我的api处理请求,但是我不知道如何“过滤” HTTPS。 现在,我的API接受了任何请求(http或https),但我希望它忽略或阻止HTTP请求,而仅回答HTTPS。

@edit: 在评论中使用了建议,并附带以下内容:     在RewriteEngine上     RewriteCond%{HTTPS}已关闭     RewriteRule ^(。*)$ https://% {HTTP_HOST}%{REQUEST_URI} [L,R = 301]

当我执行HTTPS请求时,它起作用,但是当我执行HTTP请求时,它发出请求,但是当我回显在主体上发送的变量时,它们为空。

4 个答案:

答案 0 :(得分:1)

请在.htaccess中设置以下重写规则。

RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

它为我工作

答案 1 :(得分:1)

.htaccess中的

  <IfModule mod_rewrite.c>
       RewriteEngine On
        # Redirection to HTTPS
            RewriteCond %{SERVER_PORT} 80
            RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
        .................
   </IfModule>

答案 2 :(得分:0)

这应该拒绝带有403的HTTP请求

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ - [F]

答案 3 :(得分:0)

自从标记了php之后,您还可以使用$_SERVER['HTTPS']

if(!isset($_SERVER['HTTPS'])) {
    header('HTTP/1.0 403 Forbidden');
    die 'You are not allowed to use http';
}