Re: Документация к директиве fastcgi_cache_key
Gena Makhomed
gmm на csdoc.com
Пт Ноя 30 09:30:27 UTC 2018
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