Welcome! Log In Create A New Profile

Advanced

Re: Зацикливание на редиректе

Валентин Бартенев
August 07, 2017 09:14AM
On Monday 07 August 2017 15:26:11 CoDDoC wrote:
> Ну, хорошо. Пусть в моем примере вообще нет хоста.
> Тогда что такое https://test.com ? Давайте назовем строкой запроса, суть
проблемы от этого не меняется.

В вашем примере это аргумент командной строки, который не участвует в запросе.
В строке запроса он не передается.


> В документации так:
> " $host
> в порядке приоритета: имя хоста из строки запроса, или имя хоста
из поля “Host” заголовка запроса.....,"
>
> Объясните мне, пожалуйста, что понимать как "имя хоста из строки запроса" и
"имя хоста из поля “Host” заголовка запроса".
> Желательно с примером для курла, как особо одаренному.

Что такое строка запроса описано в RFC:
https://tools.ietf.org/html/rfc7230#section-3.1.1

Пример с curl:

$ curl -ILH 'Host: www.nginx.org' -x http://nginx.org:80/ http://nginx.org/


>
> Далее, Вы приводите пример с netcat. Аналогично можно использовать telnet.
> Только ведь после получения Location ему нужно следовать. Полученный
Location: http://nginx.org/ куда возвращает? На HEAD http://nginx.org/
HTTP/1.1.

Первый пример netcat как раз содержит http://nginx.org/ в строке запроса
и как вы можете наблюдать - редиректа нет.

Второй пример не содержит в строке запроса хоста, а в заголовке Host
содержится www.nginx.org и происходит редирект.


>
> То же самое, только не вводить построчно:
>
> curl -ILH 'Host: www.nginx.org' https://nginx.org/
>
> И точно такое же зацикливание.

В данном случае отправляет запрос только с www.nginx.org в заголовке Host
и отсутствием хоста в строке запроса. Так работает curl.

Зацикливания происходит только потому, что вы сами заставили curl
постоянно отправлять запрос с Host: www.nginx.org, о чем предупреждает
документация:


man curl:

-H, --header <header>

WARNING: headers set with this option will be set in
all requests - even after redirects are followed,
like when told with -L, --location. This can lead to
the header being sent to other hosts than the origi‐
nal host, so sensitive headers should be used with
caution combined with following redirects.



Если вы укажите заголовок Host так, как это правильно для curl,
то никаких проблем нет:

curl -IL https://www.nginx.org/


> Пусть мои примеры неверны. Но работают, и приводят к зацикливанию при
псевдо-валидном запросе.

Ваши примеры демонстрируют неправильное использование команды curl,
о чем вас предупреждает документация.

> По большому счету, меня интересует только, как это побороть.
>

Использовать curl правильно.

--
Валентин Бартенев
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Зацикливание на редиректе

CoDDoC August 03, 2017 05:16AM

Re: Зацикливание на редиректе

Валентин Бартенев August 05, 2017 02:48PM

Re[2]: Зацикливание на редиректе

CoDDoC August 07, 2017 02:12AM

Re: Зацикливание на редиректе

Валентин Бартенев August 07, 2017 06:26AM

Re: Зацикливание на редиректе

Валентин Бартенев August 07, 2017 06:38AM

Re[2]: Зацикливание на редиректе

CoDDoC August 07, 2017 08:28AM

Re: Зацикливание на редиректе

Валентин Бартенев August 07, 2017 09:14AM

Re[2]: Зацикливание на редиректе

CoDDoC August 08, 2017 01:22AM

Re: Зацикливание на редиректе

Иван August 08, 2017 06:00AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 166
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready