HTTP Link-заголовки для обнаружения агентами
Что такое Link-заголовки (RFC 8288), зачем они AI-агентам для обнаружения ресурсов, пример, правильно vs неправильно, ошибки и как проверить.
Обновлено:
Что это
HTTP-заголовок Link (RFC 8288) объявляет связанные ресурсы прямо в ответе
сервера, без необходимости парсить HTML. Через rel-типы вы указываете агенту,
где лежат каталог API, условия использования, политика конфиденциальности и т.п.
Зачем это AI-агентам
Агент делает дешёвый HEAD/GET и сразу из заголовков узнаёт, что у вас есть и
где это, — не загружая и не разбирая весь HTML. Это быстрый, надёжный канал
обнаружения возможностей: api-catalog, terms-of-service, service-desc и др.
Минимальный рабочий пример
HTTP/1.1 200 OK
Link: <https://example.com/.well-known/api-catalog>; rel="api-catalog",
<https://example.com/terms>; rel="terms-of-service"
Несколько ссылок разделяются запятой; URL — в угловых скобках, rel — после ;.
Правильно vs неправильно
| Правильно | Неправильно |
|---|---|
Стандартные rel (api-catalog, terms-of-service) | Выдуманные rel, которые агент не понимает |
Абсолютные URL в <...> | Относительные пути |
| Заголовок на релевантных ответах | Link только на 404 или вовсе нет |
| Корректный синтаксис RFC 8288 | Сломанные скобки/запятые — заголовок не парсится |
Типичные ошибки
- Самодельные
rel-типы вместо зарегистрированных. - Относительные URL — спецификация допускает, но агенты надёжнее работают с абсолютными.
- Синтаксические ошибки (забытая
>или,) — весь заголовок невалиден. - Дубли, конфликтующие с
<link>в HTML.
Как проверить
Скан проверит наличие и корректность Link-заголовков. Вручную:
curl -sI https://example.com/ | grep -i '^link:'
Ответ должен содержать Link: с понятными rel-типами и абсолютными URL.