如何从laravel HTTP请求类获取传入请求的协议(http / https)?

时间:2017-03-23 07:02:14

标签: laravel laravel-5.2

在我的新应用程序API中,我必须检查来自第三方网址的请求应该是https。如果它不是https,我必须将消息返回为"连接不安全'。任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:11)

你在这里:

Determining If The Request Is Over HTTPS

if (Request::secure())
{
  //
}

答案 1 :(得分:1)

Daniel Tran的回答仅对于信息而言是正确的HTTPS类型请求在请求中有一个额外的字段 HTTPS 。有时这个字段也可以等于 off ,但没有别的。

所以你可以编写像

这样的代码
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') { 
  doSomething();
}

Laravel Request Class也继承了一些与symphony完全相似的东西。你可以找到;

  

vendor / symfony / http-foundatiton / Request.php

public function isSecure()
    {
        if ($this->isFromTrustedProxy() && self::$trustedHeaders[self::HEADER_CLIENT_PROTO] && $proto = $this->headers->get(self::$trustedHeaders[self::HEADER_CLIENT_PROTO])) {
            return in_array(strtolower(current(explode(',', $proto))), array('https', 'on', 'ssl', '1'));
        }

        $https = $this->server->get('HTTPS');

        return !empty($https) && 'off' !== strtolower($https);
    }

答案 2 :(得分:0)

在Laravel Request类中,使用getSchemeAndHttpHost()方法

{{Request :: getSchemeAndHttpHost()}}

例如返回:http://example.comhttp://192.0.0.1https://example.com

返回协议/域名