On 29.11.2018 21:02, Maxim Dounin wrote:

CGI и HTTP - это два разных протокола.  В последних вариациях на
тему спецификации CGI записано, что на HEAD-запросы тело
возвращать не надо (а если вдруг вернули - то сервер его должен
поскипать), https://tools.ietf.org/html/rfc3875#section-4.3.3:

    The HEAD method requests the script to do sufficient processing to
    return the response header fields, without providing a response
    message-body.  The script MUST NOT provide a response message-body
    for a HEAD request.  If it does, then the server MUST discard the
    message-body when reading the response from the script.

Однако на момент собственно появления и активного распространения
CGI никаких подобных требований не существовало, см.
https://www.w3.org/CGI/ и в частности
https://tools.ietf.org/html/draft-robinson-www-interface-00.

Там написано:

REQUEST_METHOD

      This variable is specific to requests made with HTTP.

      The method with which the request was made, as described in
      section 5.1.1 of the HTTP/1.0 specification [3].

         http-method      = "GET" | "HEAD" | "POST" | extension-method

"described in HTTP/1.0 specification" - написано где смотреть семантику.
А в HTTP/1.0 specification написано, что "server must not return any
Entity-Body in the response".

CGI и HTTP - это два разных протокола, но первый ссылается на второй.
При этом CGI протокол не запрещает бекенду отвечать на HEAD-запросы
так, как этого требует от веб-сервера спецификация HTTP протокола.

И на
практике я не встречал скрипты, которые бы отдельно обрабатывали
HEAD-запросы.

Но они есть.
И их поведение ничем не противоречит спецификации FastCGI протокола.

Речь про какие-то фреймворки, которые обрабатывают
HEAD автоматически, не донося соответствующую информацию до кода?
Или про какой-то стандартный софт, который не возвращает тело для
HEAD-запросов?

Какая разница, сам софт или фрейморк используемый софтом в каждом
конкретном случае обрабатывает HEAD запросы согласно требований RFC?

Никакой.  Но с этой точки зрения так же нет разницы, что именно
написано в примерах в описании директивы fastcgi_cache_key.

Вы не против, если я создам на хабре статью, в которой напишу
про эту проблему с ошибочными примерами в документации nginx
к директиве fastcgi_cache_key и ее аналогам?

--
Best regards,
 Gena

_______________________________________________
nginx-ru mailing list
[email protected]
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Ответить