Различие между 'завихрением-I' и 'завихрением-X ГОЛОВА'

Как насчет сцены Крепкий орешек 4.0 в NSA datawarehouse, где плохой парень поднимает в этот супер безопасный мейнфрейм с помощью волоконной оптики, медного Ethernet И коаксильного кабеля BNC!

Или поскольку другие упомянули, как MacOS интегрируется отлично с посторонней технологией в Дне независимости...

Денежный перевод экранирует в XXX на Книге с картинками Vaio Sony, выполняющей "MovieOS"...

Супер безопасный мейнфрейм в Миссия невыполнима, который имеет простой в использовании GUI для упрощения Круизу к доступу, в то время как приостановлено от потолка...

Существует сцена в Брандмауэре, где Форд говорит о включении брандмауэра Cisco, ACL для блокирования попытки взлома и слов, выходящих из его рта, звучит реалистичным, но если Вы наблюдаете то, что он на самом деле делает, это полностью бесполезно...

Я удивлен, что никто даже не упомянул ни одной из сцен взламывания в Хакерах или Sneakers... загрузки смеха ни в одном из них...

71
задан 8 July 2010 в 15:24
4 ответа

Кажется, что различие имеет отношение Content-Length заголовок и как это рассматривают обе команды.

Но перед входом в это, curl -X HEAD не дает вывода потому что, по умолчанию, curl не печатает заголовки если переключатель -i не обеспечивается (не нужный на -I хотя).

В любом случае, curl -I надлежащий путь состоит в том, чтобы выбрать заголовки. Это просто просит заголовок и закрывает соединение.

С другой стороны, curl -X HEAD -i будет ожидать передачи числа байтов, указанных Content-Length. В случае нет Content-Length не указан, я предполагаю, что это будет ожидать некоторых данных или того конкретного заголовка.

Некоторые примеры, который показывает это поведение:

$ curl -X HEAD -i http://www.elpais.es
HTTP/1.1 301 Moved Permanently
Server: AkamaiGHost
Content-Length: 0
Location: http://www.elpais.com/
Date: Wed, 12 May 2010 06:35:57 GMT
Connection: keep-alive

Поскольку Content-Length 0, в этом случае обе команды ведут себя то же. И соединение закрывается впоследствии.

$ curl -X HEAD -i http://slashdot.org
HTTP/1.1 200 OK
Server: Apache/1.3.41 (Unix) mod_perl/1.31-rc4
SLASH_LOG_DATA: shtml
X-Powered-By: Slash 2.005001296
X-Bender: Since I love you all so much, I'd like to give everyone hugs.
X-XRDS-Location: http://slashdot.org/slashdot.xrds
Cache-Control: no-cache
Pragma: no-cache
Content-Type: text/html; charset=iso-8859-1
Content-Length: 115224
Date: Wed, 12 May 2010 06:37:20 GMT
X-Varnish: 1649060825 1649060810
Age: 1
Connection: keep-alive

curl: (18) transfer closed with 115224 bytes remaining to read

В этом случае, кажется, существует тайм-аут (вероятно, Лаком), таким образом, curl протесты, что соединение было закрыто прежде получило Content-Length число байтов.

Между прочим, посмотрите на забавный X-гибочный-станок (показанный в примере), и X-жаркое (попробуйте его за себя), заголовки :).

67
ответ дан 28 November 2019 в 19:28

Я думаю, что это - ошибка в завихрении. Если я указываю метод с-X, завихрение должно обработать ответ согласно RFC. К сожалению, специалист по обслуживанию завихрения не соглашается. Кто-то зарегистрировал ошибку и даже отправил патч:

http://sourceforge.net/tracker/?func=detail&atid=100976&aid=1810273&group_id=976

но вихревой специалист по обслуживанию отклонил его. По-видимому, поврежденный "-X ГЛАВНАЯ" опция "работает, как разработано".

- Jamshid

12
ответ дан 28 November 2019 в 19:28

Из документы :

-X, --request

(HTTP) Задает настраиваемый метод запроса для использования при обмене данными с HTTP-сервером. Указанный метод запроса будет использоваться вместо метода, который использовался иначе (по умолчанию GET). Прочтите спецификацию HTTP 1.1 для получения подробностей и пояснений. Общие дополнительные HTTP-запросы включают PUT и DELETE, но связанные технологии, такие как WebDAV, предлагают PROPFIND, COPY, MOVE и др.

Обычно вам не нужна эта опция. Все виды запросов GET, HEAD, POST и PUT скорее вызываются с использованием специальных параметров командной строки.

Этот параметр изменяет только фактическое слово , используемое в HTTP-запросе, оно не меняет поведение curl . Так, например, если вы хотите сделать правильный запрос HEAD, использования -X HEAD будет недостаточно. Вам необходимо использовать параметр -I, --head.

Другими словами, -X предназначен для методов, отличных от GET , HEAD , POST и PUT .Для HEAD используйте -I .

5
ответ дан 28 November 2019 в 19:28

Я сталкиваюсь с той же проблемой при написании кода cpp на curl 7.34,

curl_easy_setopt(curl_handle, CURLOPT_CUSTOMREQUEST, "HEAD");

будет зависать долго вроде ждет передачи тела пока не истечет таймаут. после добавления новой строки эта проблема решается.

curl_easy_setopt(curl_handle, CURLOPT_NOBODY, 1L );

из документ

выполняет запрос загрузки без получения тела

эта строка заставит curl не ждать.

0
ответ дан 28 November 2019 в 19:28

Теги

Похожие вопросы