У меня есть отличная концептуальная дискуссия с моими коллегами об использовании заголовка Location в ответе "Принимаемый ответ".
История начала анализировать поведение функции PHP header() из здесь. Интересная выдержка:
Второй особый случай - заголовок "Location:". Он не только отправляет этот заголовок обратно в браузер, но также возвращает код статуса REDIRECT (302) в браузер, если код статуса 201 или 3xx уже не установлен.
Они не включали код статуса 202 в это поведение по умолчанию. Похоже, они не ожидают, что ответ 202 имеет местоположение и действительно:
header("HTTP/1.1 202");
header("Location: http://example.com");
перенаправить клиента на URL-адрес местоположения. Конечно, это изменение можно изменить с помощью третьего параметра функции header(), но мое внимание привлекло следующее: почему они поняли, что по умолчанию 202 не предполагается содержать заголовок Location?
Затем я просматриваю RFC, ища официальное значение статуса 202. Интересная выдержка:
Объект, возвращенный с этим ответом, ДОЛЖЕН включать указание текущего состояния запроса и указатель на монитор состояния или некоторую оценку того, когда пользователь может ожидать выполнения запроса.
В нем явно не указано заголовок Location, как это было в предыдущем (в том же документе RFC) 201. Вероятно, это было причиной того, почему парни PHP понимали, что ответ 202 не должен содержать заголовок местоположения. Будет ли указатель интерпретироваться как заголовок местоположения или ребята из PHP, ошибочно принятые? Если стандарт разрешает заголовок местоположения с ответом 202: не должно быть официальной документации более явной, как определение ответа 201?
Наконец, я просмотрел версию недавно RFC и нашел небольшое изменение в редакции:
Представление, отправленное с этим ответом, должно описывать текущий статус запроса и указывать (или внедрять) монитор состояния, который предоставляет пользователю оценку того, когда запрос будет выполнен.
Опять же, недостаточно явно предположить, что указывает на означает заголовок местоположения.
Короче говоря, после вышеупомянутых изменений: Я являюсь RFC-совместимым, используя заголовок Location с ответом 202?