slden
@slden

Почему команда curl -I (--head) отдает код 404, а curl -i отдает код 200?

Собственно, в команде curl оба ключа -I и -i должны возвращать код-ответа. Но в моем случае, они (коды ответа) почему-то разные.
Через браузер все работает отлично.
  • Вопрос задан
  • 429 просмотров
Пригласить эксперта
Ответы на вопрос 4
Melkij
@Melkij
PostgreSQL DBA
curl 127.0.0.1 -I
melkij@melkij:~$ nc -l 8081
HEAD / HTTP/1.1
Host: 127.0.0.1:8081
User-Agent: curl/7.64.0
Accept: */*


curl 127.0.0.1:8081 -i
melkij@melkij:~$ nc -l 8081
GET / HTTP/1.1
Host: 127.0.0.1:8081
User-Agent: curl/7.64.0
Accept: */*


И что мешает веб-серверу на разные запросы реагировать по-разному?
Ответ написан
Комментировать
@q2digger
никого не трогаю, починяю примус
а если добавить User-Agent ? чтото типа
curl -H "User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0" blah blah
Ответ написан
Комментировать
shambler81
@shambler81 Куратор тега Linux
5f841bb2f143b334402655.png

curl -I http://ya.ru 2>/dev/null | head -n 1 | cut -d$' ' -f2
curl -i http://ya.ru 2>/dev/null | head -n 1 | cut -d$' ' -f2

может вы покажете все что у вас написано ?
Ответ написан
Комментировать
shurshur
@shurshur
Сисадмин, просто сисадмин...
В зависимости от используемых библиотек и технологий обработчик HEAD может быть необходимо ещё и явным образом надо написать. Поэтому нет ничего удивительного, что сервер и не обязан возвращать одинаково.

Например, вот у меня есть сто лет назад написанный скрипт на базе библиотеки BaseHTTPServer:

def do_GET(self):
  url = self.path
  for mm in self.methodmap.keys():
    if re.match(mm, url):
      return self.methodmap[mm](url, None)
  self.send_response(404)
  self.send_header('Content-Type', 'text/plain')
  self.end_headers()
  self.wfile.write('URL not defined')

def do_HEAD(self):
  self.send_response(200)
  self.send_header('Content-type', 'application/json')
  self.end_headers()


Здесь HEAD всегда будет возвращать 200, даже на кривые URL, в то время как GET может возвращать 404. Потому что писать красиво для HEAD мне не было никакой потребности, и я просто оставил тот вариант, который был в шаблоне скрипта по умолчанию.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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