Реализация заголовков совместного использования ресурсов между источниками (CORS) в PHP

Обмен ресурсами между источниками (CORS) – это механизм безопасности, реализованный в веб-браузерах для ограничения HTTP-запросов из разных источников. Когда веб-страница, размещенная в одном домене, пытается получить доступ к ресурсам (таким как API или активы) в другом домене, браузер применяет CORS, чтобы гарантировать, что запрос разрешен сервером. В этой статье мы рассмотрим различные методы установки заголовков CORS с помощью PHP и предоставим примеры кода для каждого подхода.

Метод 1: установка заголовков CORS в PHP

<?php
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
header("Access-Control-Allow-Headers: Content-Type");

В этом методе мы используем функцию header()для установки необходимых заголовков CORS. Заголовок "Access-Control-Allow-Origin: *"допускает запросы из любого источника. Вы можете заменить *на определенные домены, чтобы ограничить доступ только к этим доменам. Заголовок "Access-Control-Allow-Methods"указывает методы HTTP, разрешенные для запроса, а заголовок "Access-Control-Allow-Headers"указывает разрешенные заголовки запроса.

Метод 2. Обработка предварительных запросов

<?php
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    header("Access-Control-Allow-Origin: *");
    header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
    header("Access-Control-Allow-Headers: Content-Type");
    exit;
}

Предварительные запросы CORS отправляются браузером, чтобы проверить, разрешает ли сервер фактический запрос. В этом методе мы проверяем, является ли метод запроса OPTIONS, и если да, то устанавливаем необходимые заголовки CORS и досрочно завершаем работу. Этот подход полезен при работе со сложными запросами, которые включают пользовательские заголовки или сложные методы.

Метод 3: настройка CORS с помощью промежуточного программного обеспечения
Если вы используете платформу PHP или архитектуру на основе промежуточного программного обеспечения, вы можете реализовать обработку CORS в качестве промежуточного программного обеспечения. Вот пример использования популярной Slim Framework:

<?php
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use Slim\Factory\AppFactory;
$app = AppFactory::create();
$app->add(function (Request $request, Response $response, $next) {
    $response = $next($request, $response);

    return $response
        ->withHeader("Access-Control-Allow-Origin", "*")
        ->withHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS")
        ->withHeader("Access-Control-Allow-Headers", "Content-Type");
});
$app->run();

В этом методе мы используем промежуточное программное обеспечение, которое добавляет в ответ необходимые заголовки CORS. Это обеспечивает большую гибкость и возможность повторного использования при обработке CORS на нескольких маршрутах и ​​конечных точках.

Реализация заголовков совместного использования ресурсов между источниками (CORS) в PHP имеет решающее значение для обеспечения безопасной связи между различными доменами. В этой статье мы рассмотрели три метода установки заголовков CORS с помощью PHP, включая прямую настройку заголовков, обработку предполетных запросов и использование промежуточного программного обеспечения. Реализуя эти методы, вы можете гарантировать, что ваше PHP-приложение разрешает запросы из разных источников, сохраняя при этом безопасность.

Не забудьте выбрать подходящий метод в зависимости от ваших конкретных требований и архитектуры вашего приложения. Следуя рекомендациям по реализации CORS, вы сможете улучшить совместимость и безопасность своих веб-приложений.