HEAD - те саме, що GET, але без тіла відповіді: сервер повертає лише статус і заголовки.
HEAD /api/exports/2026-09.csv
HTTP/1.1 200 OK
Content-Type: text/csv
Content-Length: 48211337
Last-Modified: Wed, 01 Oct 2026 03:00:00 GMT
ETag: "a1b2c3"
Навіщо:
- дізнатися розмір файлу перед завантаженням (смуга прогресу, перевірка місця);
- перевірити, чи ресурс існує чи змінився (
ETag,Last-Modified) без передачі вмісту; - перевірка посилань - сканери битих посилань і моніторинг доступності.
Заголовки відповіді на HEAD мають бути такими самими, як для GET. У Laravel маршрути GET автоматично відповідають і на HEAD - фреймворк просто відкидає тіло.
OPTIONS - запит про можливості ресурсу: які методи підтримуються.
OPTIONS /api/orders/42
HTTP/1.1 204 No Content
Allow: GET, PATCH, DELETE
Головне застосування на практиці - попередній запит CORS (preflight). Перед «непростим» запитом з іншого джерела (методи PUT/PATCH/DELETE, заголовок Authorization, Content-Type: application/json) браузер сам надсилає OPTIONS:
OPTIONS /api/orders/42
Origin: https://app.example.com
Access-Control-Request-Method: PATCH
Access-Control-Request-Headers: authorization, content-type
Сервер відповідає дозволами (Access-Control-Allow-*), і лише потім іде справжній запит. У Laravel це робить middleware HandleCors з config/cors.php.
Що варто знати:
- обидва методи безпечні й ідемпотентні - не повинні змінювати стан;
- preflight - додатковий запит на кожен «непростий» запит з іншого джерела.
Access-Control-Max-Ageдозволяє браузеру кешувати дозвіл і не повторюватиOPTIONSщоразу; - автентифікація для
OPTIONS: браузер не надсилаєAuthorizationу preflight. Якщо middleware автентифікації відхиляєOPTIONSз 401, CORS-запити ламаються - preflight має оброблятися до автентифікації (як це й робить глобальнийHandleCors); 405 Method Not Allowedразом із заголовкомAllow- правильна відповідь на непідтримуваний метод.