Обмен ресурсами между источниками (CORS) — это важный механизм безопасности, который позволяет веб-браузерам отправлять запросы к домену, отличному от того, из которого возникла веб-страница. При выполнении запросов между источниками браузер отправляет HTTP-запрос на сервер, который отвечает определенными заголовками, указывающими, разрешен запрос или нет. В PHP вы можете управлять заголовком Cross-Origin-Allow-Origin, используя различные методы. В этой статье мы рассмотрим несколько методов с примерами кода для включения CORS в приложениях PHP.
Метод 1: использование функции заголовка PHP
<?php
header("Access-Control-Allow-Origin: *");
Этот метод устанавливает для заголовка Access-Control-Allow-Origin значение «*» (подстановочный знак), разрешая запросы из любого домена. Это самый простой способ включить CORS, но он может подходить не для всех сценариев, поскольку допускает запросы из любого источника.
Метод 2: разрешение определенных источников
<?php
$allowedOrigins = array(
"https://example.com",
"https://api.example.com"
);
$origin = $_SERVER['HTTP_ORIGIN'];
if (in_array($origin, $allowedOrigins)) {
header("Access-Control-Allow-Origin: " . $origin);
}
Этот метод проверяет, присутствует ли запрашивающий источник в списке разрешенных источников. Если совпадение найдено, заголовок Access-Control-Allow-Origin устанавливается соответствующим образом. Этот подход обеспечивает больший контроль над тем, каким доменам разрешено отправлять запросы из разных источников.
Метод 3. Обработка предварительных запросов
<?php
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: POST, GET, OPTIONS");
header("Access-Control-Allow-Headers: Content-Type");
exit;
}
Предварительные запросы отправляются браузером, чтобы проверить, разрешен ли сервером запрос между источниками. Этот метод обрабатывает предварительные запросы, отвечая соответствующими заголовками. Он позволяет использовать определенные методы (POST, GET, OPTIONS) и заголовки (Content-Type) для запросов между источниками.
Метод 4: использование промежуточного программного обеспечения/оболочки PHP
Если вы используете платформу PHP или хотите более модульный подход, вы можете создать промежуточное программное обеспечение или функцию-оболочку для обработки заголовков CORS. Это позволяет вам централизовать логику CORS и применять ее к нескольким маршрутам или конечным точкам. Вот пример использования микрофреймворка Slim PHP:
<?php
use Slim\App;
$app = new App();
$app->options('/{routes:.+}', function ($request, $response, $args) {
return $response;
});
$app->add(function ($request, $handler) {
$response = $handler->handle($request);
return $response
->withHeader('Access-Control-Allow-Origin', '*')
->withHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS')
->withHeader('Access-Control-Allow-Headers', 'Content-Type');
});
// Define your routes and application logic here
$app->run();
Этот метод демонстрирует использование функции промежуточного программного обеспечения в среде Slim для обработки заголовков CORS. Он позволяет вам определять разрешенные методы и заголовки, обеспечивая гибкость и возможность повторного использования.
Включение совместного использования ресурсов между источниками (CORS) в приложениях PHP имеет решающее значение для обеспечения безопасности запросов из разных источников. В этой статье мы рассмотрели несколько методов управления заголовком Access-Control-Allow-Origin с помощью PHP. В зависимости от ваших конкретных требований вы можете выбрать подходящий метод, чтобы разрешить запросы из определенных доменов или всех доменов. Реализация правильной обработки CORS обеспечивает безопасное и надежное веб-приложение.