Метод isSecure
Метод isSecure класса Request возвращает логическое значение true, если текущий запрос был сделан по протоколу HTTPS, и false - если по HTTP. Метод не принимает параметров. Он опирается на данные, переданные сервером, и учитывает настройки доверенных прокси.
Синтаксис
$request->isSecure();
Пример
Давайте проверим, является ли текущий запрос защищённым, и выведем результат:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(Request $request): Response
{
$res = $request->isSecure();
return new Response($res ? 'secure' : 'not secure');
}
}
?>
Результат выполнения кода при запросе по HTTPS:
"secure"
Результат выполнения кода при запросе по HTTP:
"not secure"
Пример
Давайте перенаправим пользователя на HTTPS-версию страницы, если запрос пришёл по HTTP:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(Request $request): Response
{
if (!$request->isSecure()) {
$url = 'https://' . $request->getHost() . $request->getRequestUri();
return new RedirectResponse($url);
}
return new Response('secure page');
}
}
?>
Результат выполнения кода при запросе по HTTPS:
"secure page"
Смотрите также
-
класс
Request,
который представляет HTTP-запрос -
метод
getScheme,
который возвращает схему запроса -
метод
getSchemeAndHttpHost,
который возвращает схему и хост запроса -
метод
getClientIp,
который возвращает IP-адрес клиента