Метод getScheme
Метод getScheme класса Request возвращает схему текущего запроса. Схема - это часть URL, которая определяет протокол передачи данных: http или https. Метод не принимает параметров и всегда возвращает строку в нижнем регистре. Если запрос был выполнен по HTTPS, метод вернёт https, в противном случае - http.
Синтаксис
public function getScheme(): string
Пример
Давайте получим схему текущего запроса в контроллере:
<?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 RequestController extends AbstractController
{
#[Route('/request/scheme', name: 'request_scheme')]
public function scheme(Request $request): Response
{
$res = $request->getScheme();
return new Response($res);
}
}
?>
Результат выполнения кода для адреса /request/scheme:
http
Пример
Давайте проверим, пришёл ли запрос по защищённому протоколу:
<?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 RequestController extends AbstractController
{
#[Route('/request/secure', name: 'request_secure')]
public function secure(Request $request): Response
{
$scheme = $request->getScheme();
if ($scheme === 'https') {
$res = 'secure connection';
} else {
$res = 'insecure connection';
}
return new Response($res);
}
}
?>
Результат выполнения кода для адреса /request/secure без HTTPS:
"insecure connection"
Результат выполнения кода для адреса /request/secure с HTTPS:
"secure connection"
Пример
Давайте соберём полный URL запроса, используя схему, хост и путь:
<?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 RequestController extends AbstractController
{
#[Route('/request/full-url', name: 'request_full_url')]
public function fullUrl(Request $request): Response
{
$scheme = $request->getScheme();
$host = $request->getHost();
$path = $request->getPathInfo();
$res = $scheme . '://' . $host . $path;
return new Response($res);
}
}
?>
Результат выполнения кода для адреса /request/full-url на локальном сервере:
"http://localhost/request/full-url"
Смотрите также
-
класс
Request,
который представляет HTTP-запрос -
метод
getSchemeAndHttpHost,
который возвращает схему и хост запроса -
метод
isSecure,
который проверяет защищённость соединения -
метод
getHost,
который возвращает хост запроса