trace_NEW


Метод "TRACE" применяется для организации петли (loopback) на прикладном уровне. HTTP-запрос при использовании метода TRACE не должен содержать тела. При получении такого запроса, сервер должен немедленно отправить поступившую информацию обратно в теле HTTP-ответа. Этот метод позволяет трассировать возможные соединения и получать информацию о временах прохождения и обработки запросов. Кроме того, проанализировав поле заголовка Via, клиент может узнать, через какие proxy сервера был пройден запрос. Поле заголовка Max-Forwards позволяет ограничивать длину цепочки запросов, что может быть полезным при тестировании бесконечных циклов в цепочке proxy серверов. Каждый proxy сервер, получив такой запрос должен декрементировать значение Max-Forwards, добавить информацию об обработке запроса в поля заголовка Via и X-Forwarded-For и передать запрос дальше. Если proxy сервер получает запрос со значением Max-Forwards равным 0, он должен вернуть ответ клиенту самостоятельно и не отправлять запрос дальше вышестоящему proxy или WEB серверу. Таким образом, последовательно выполняя метод TRACE увеличивая Max-Forwards можно определить всю цепочку proxy серверов, включая «прозрачные» proxy сервера (transparent).
Ниже приведен пример выполнения запросов к серверу wwww.volpi.ru от клиента 192.168.29.106. В данном случае используется цепочка proxy серверов (proxy1 – 192.168.29.1:3128 (Squid 2.6.16), proxy2 – 195.209.133.1:8080 (Squid 2.7.6)). После каждого запроса приведен пример ответа сервера. Обратите внимание, что в теле HTTP-ответа будет отправлена вся информация, полученная сервером при выполнении метода TRACE.
Client:
TRACE / HTTP/1.1
Host: www.volpi.ru
Max-Forwards: 0
Server:
HTTP/1.0 200 OK
Date: Wed, 01 Jun 2016 12:04:32 GMT
Server: squid/2.6.16
Content-Type: message/http
TRACE / HTTP/1.1
Host: www.volpi.ru
Max-Forwards: 0
Из примера видно, что при выполнении запроса с Max-Forwards = 0 мы получили ответ от первого proxy сервера (192.168.29.1 (Squid 2.6.16)) и он не отправил запрос далее.
Client:
TRACE / HTTP/1.1
Host: www.volpi.ru
Max-Forwards: 1
Server:
HTTP/1.0 200 OK
Date: Wed, 01 Jun 2016 12:05:30 GMT
Server: Squid 2.7.6
Content-Type: message/http
Via: 1.1 192.168.29.1:3128 (squid/2.6.16)
TRACE / HTTP/1.1
Host: www.volpi.ru
Max-Forwards: 0
Via: 1.1 192.168.29.1:3128 (squid/2.6.16)
X-Forwarded-For: 192.168.29.106

При выполнении запроса с Max-Forwards = 1 мы получили ответ от второго proxy сервера (195.209.133.1 (Squid 2.7.6)). Кроме того, первый proxy сервер добавил поле Via к HTTP-запросу и HTTP-ответу, поле X-Forwarded-For к запросу и декрементировал значение поля Max-Forwards в HTTP-запросе.

Client:
TRACE / HTTP/1.1
Host: www.volpi.ru
Max-Forwards: 2
Server:
HTTP/1.0 200 OK
Date: Wed, 01 Jun 2016 12:07:30 GMT
Server: Apache/2.4.16
Content-Type: message/http
Via: 1.1 192.168.29.1:3128 (squid/2.6.16), 1.1 195.209.133.1:8080 (squid/2.7.6)
TRACE / HTTP/1.1
Host: www.volpi.ru
Max-Forwards: 0
Via: 1.1 192.168.29.1:3128 (squid/2.6.16), 1.1 195.209.133.1:8080 (squid/2.7.6)
X-Forwarded-For: 192.168.29.106, 192.168.29.1
Наконец при выполнении запроса с Max-Forwards = 2 мы получили ответ уже от самого WEB-сервера (Apache). Причем второй proxy сервер также декрементировал поле Max-Forwards и добавил информацию о себе в поле Via запроса и ответа, а также обновил поле X-Forwarded-For. Для второго proxy сервера первый proxy является клиентом, поэтому он добавляет его адрес в поле X-Forwarded-For. Поле X-Forwarded-For может также анализироваться WEB-сервером для определения реального адреса клиента, сделавшего запрос, даже если он находится за цепочкой proxy серверов. Также может использоваться дополнительное поле Forwarded, добавленное в RFC-7239.
Методы TRACE и OPTIONS также могут не поддерживаться сервером или отключаться администраторами.

Приложенные файлы

  • docx 1307035
    Размер файла: 17 kB Загрузок: 0

Добавить комментарий