Как работать с методом HTTP OPTIONS, используя Slim

Основываясь на моей первой попытке использовать Slim, я включил следующую конечную точку, даже подумав, что не знаю, что это значит. Я чувствовал, что пришло время узнать, и как я должен обращаться с вариантами и Slim.

$app->options('/{routes:.+}', function ($request, $response) {
return $response;
});

Итак, я провожу небольшое исследование.

в https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

9.2 ОПЦИИ Метод ОПЦИИ представляет собой запрос информации о параметрах связи, доступных в запросе / ответе.
цепь, идентифицируемая Request-URI. Этот метод позволяет клиенту
определить параметры и / или требования, связанные с ресурсом,
или возможности сервера, не подразумевая действия ресурса или
инициирование поиска ресурса.

Ответы на этот метод не кешируются.

Если запрос OPTIONS включает в себя тело объекта (как указано
наличие Content-Length или Transfer-Encoding), затем тип носителя
ДОЛЖЕН быть указан полем Content-Type. Хотя эта спецификация
не определяет никакого использования для такого тела, будущие расширения для HTTP
может использовать тело OPTIONS, чтобы сделать более подробные запросы на
сервер. Сервер, который не поддерживает такое расширение, МОЖЕТ удалить
тело запроса.

Если Request-URI является звездочкой (««) запрос OPTIONS
предназначен для применения к серверу в целом, а не к конкретному
ресурс. Поскольку параметры связи сервера обычно зависят от
ресурс «
«запрос полезен только в качестве метода« ping »или« no-op »; он не делает ничего, кроме как позволить клиенту протестировать
Возможности сервера. Например, это можно использовать для проверки
прокси для соответствия HTTP / 1.1 (или его отсутствие).

Если Request-URI не является звездочкой, применяется запрос OPTIONS
только те опции, которые доступны при общении с этим
ресурс.

Ответ 200 ДОЛЖЕН включать любые поля заголовка, которые указывают необязательный
функции, реализованные сервером и применимые к этому ресурсу
(например, разрешить), возможно, включая расширения, не определенные этим
Спецификация. Тело ответа, если таковое имеется, ДОЛЖНО также включать
информация о вариантах связи. Формат для такого

Тело не определено этой спецификацией, но может быть определено
будущие расширения HTTP. Согласование контента МОЖЕТ быть использовано для выбора
соответствующий формат ответа. Если тело ответа не включено,
ответ ДОЛЖЕН включать поле Content-Length со значением поля
«0».

Поле заголовка запроса Max-Forwards МОЖЕТ использоваться, чтобы предназначаться для определенного
прокси в цепочке запросов. Когда прокси получает запрос OPTIONS
на absoluteURI, для которого разрешена пересылка запросов, прокси
ДОЛЖЕН проверять наличие поля Max-Forwards. Если значение поля Max-Forwards
ноль («0»), прокси НЕ ДОЛЖЕН пересылать сообщение; вместо этого
Прокси ДОЛЖЕН ответить своими собственными опциями связи. Если
Max-Forwards поле-значение является целым числом больше нуля, прокси
ДОЛЖЕН уменьшать значение поля, когда оно направляет запрос. Если нет
Поле Max-Forwards присутствует в запросе, затем пересылается
запрос НЕ ДОЛЖЕН включать поле Max-Forwards.

в https://www.slimframework.com/docs/v3/objects/router.html

ОПЦИИ Маршрут Вы можете добавить маршрут, который обрабатывает только ОПЦИИ HTTP
запросы с помощью метода options () приложения Slim. Он принимает два
аргументы:

Шаблон маршрута (с необязательными именованными заполнителями) Обратный вызов маршрута

$ app = new \ Slim \ App (); $ app-> options (‘/ books / {id}’, function ($ request, $ response, $ args) {Возвращать заголовки ответа});

Итак, я немного узнал, но куда идти отсюда? Похоже, что метод OPTIONS — это то, что я должен решить, хочу ли я реализовать, и если нет, возможно, бросить 501 Not Implemented код статуса? Или, может быть, сделать, как я делал изначально, и просто вернуть его обратно? Есть ли какие-либо последствия для безопасности, чтобы не создавать для них конечную точку? Думаю, я немного болтаю …

Вопросы:

  1. Как большинство API REST реагируют на методы OPTIONS?
  2. Каковы несколько примеров, где они могут быть полезны в REST API?
  3. Если не используется API REST, реализованный с использованием Slim, что нужно сделать для повышения безопасности и устранения ошибок, возникающих в результате выполнения запроса, использующего этот метод?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]