Проверить код ответа сервера linux

Попович Алексей персональный сайт разработчика


Основные направления моей деятельности

На битриксе можно реализовать что угодно. Как говорил один клиент — реализовать можно все, лишь бы было кому это оплатить 🙂

Созданием сайтов я занимаюсь с 2009-го года, а вообще основами алгоритмов и программированием занимаюсь еще со школьных лет, т.е. примерно с 2000-го года. За всю свою практику в создании приложений (а веб-решение — это также приложение, активно или пассивно взаимодействующее с пользователем) понял главное — нельзя охватить все, иначе не будешь знать ничего.

К основным направлениям моей деятельности относятся:

  • Проектирование веб-решений разного уровня сложности (предпочитаю работать над неординарными проектами, позволяющими поломать голову над реализацией задачи);
  • Создание предпроектного описания задачи (ТЗ) для создания сайта на базе продуктов 1С-Битрикс;
  • Сопровождение и доработки действующих проектов на базе продуктов 1С-Битрикс;
  • Создание сайтов с нуля с использованием готовых решений. Выбираем наиболее подходящее вам из готовых решений на Marketplace, устанавливаем его и потом уже его допиливаем;
  • Перенос сайтов с любой другой CMS под управление 1С-Битрикс Управление сайтом;
  • Анализ сайтов-конкурентов;
  • Курирование работы сводной команды разработчиков над вашим веб-решением на базе 1С-Битрикс — могу выступать в роли Менеджера проекта с постановкой задач всем участникам проекта, оценкой качества выполненной работы, решением вопросов, возникающих в ходе работы над проектом;
  • Настройка интеграции сайтов на базе 1С-Битрикс с любой другой системой через API систем или через обмен файлами с другой системой;
  • Получение информации с публичных страниц сторонних сайтов, путем прямого парсинга данных;
  • Доработка сайтов под требования сео-специалистов;
  • Перенос сайтов с разделяемых хостингов на VPS;

Отзывы о работе веб-мастера

Александра

Алексей помог нам настроить нужные параметры выгрузки на яндекс-маркет и по другим задачам с сайтом Битрикс не раз нас выручал. Работает качественно в оговоренные сроки так что Всем рекомендую.

Максим

Работаем с Алексеем по проектам наших партнеров, выполняя различные технические задачи. Все делается четко, оперативно и доводится до конца даже если задача оказывается сложнее, чем была на первый взгляд. Однозначно могу рекомендовать!

Александр

Спасибо Алексею за создания для нас 2-х проектов, сначала начиналось с одного сайта, доработки и прикрутки, все происходило быстро в срок и без сложных технических заданий. Потом были вынуждены переезжать на другой хостинг. переживали сохраняться ли все наши наработки-дороботки, все было сделано опять на отлично. Спасибо, Алексею за его профессионализм, имеем опыт работы с ним более 5 лет и можем рекомендовать к сотрудничеству.

Источник

Код ответа сервера на HTTP запросы

Запросы бывают различных типов, запросы на получение данных — это обычно GET. HEAD запросы предназначены для того чтобы получить только заголовки.

Проверяются заголовки при помощи консольной утилиты curl или путем отправки запросов предварительно подключившись к серверу с использованием telnet (в конце статьи содержится ссылка на сервис, позволяющий проверять заголовки в браузере)

Проверка ответа сервера — telnet

Trying ::1…
Connected to localhost.
Escape character is ‘^]’.

Теперь дважды нужно нажать Enter на клавиатуре

В консоль будет выведен HTTP ответ — в нем интерес представляет первая строка, а которой и содержится нужная информация

HTTP/1.1 200 OK
Server: nginx/1.10.3
Date: Thu, 01 Mar 2018 16:26:59 GMT
Content-Type: text/html
Content-Length: 612

Код ответа 200 говорит о том, что ответ нормальный и сервер успешно отдал запрашиваемый клиентом контент.

Проверка ответа сервера — curl

curl лучше всего использовать с ключем -I, в этом случае отдаваться будут только заголовки без содержимого страницы, что и требуется. Запросим домен server-gu.ru

HTTP/1.1 301 Moved Permanently
Server: nginx/1.10.3
Date: Thu, 01 Mar 2018 16:46:19 GMT
Content-Type: text/html
Content-Length: 185
Connection: keep-alive
Location: https://server-gu.ru/

Если выполнить запрос к сайту с https ответ будет 200.

Коды ответа сервера, которые можно встретить чаще всего:
  • 200 — запрос успешно обработан
  • 301 — постоянный редирект на другой домен
  • 302 — некэширующийся редирект (подробнее о различиях)
  • 404 — страница не найдена
  • 403 — доступ запрещен
  • 500 — ошибка сервера, вызванная неверной настройкой (подробнее)
  • 502 — ошибка сервера, вызванная отсутствием ответа от бэкенда (подробнее)
Читайте также:  Фоторедакторы windows для компьютера

Все коды, начинающиеся на 2хх означают, что запрос успешно обработан, на 3хх, что выполняется переадресация, на 4хх — произошла ошибка на стороне клиента, на 5хх — произошла ошибка на стороне сервера.

Проверить код ответа сервера также можно воспользовавшись специализированным инструментом. Он проверяет кэширование данных, но в выводе присутствует также код ответа.

Источник

Получение curl для вывода кода состояния HTTP?

Я использую curl в командной строке в Linux для выдачи HTTP-запросов. Тела ответа печатаются в стандартном формате, и это нормально, но я не вижу на странице руководства, как заставить curl печатать код состояния HTTP из ответа (404, 403 и т. Д.). Это возможно?

Это должно работать для вас, если веб-сервер может отвечать на запросы HEAD (это не будет выполнять a GET ):

Кроме того, чтобы позволить cURL следовать перенаправлениям (статусы 3xx), добавьте -L.

Более конкретный способ распечатать только код состояния HTTP — это что-то вроде:

Намного проще работать в скриптах, так как это не требует синтаксического анализа 🙂

Параметр -I может быть добавлен для улучшения производительности ответной нагрузки. Этот параметр просто запрашивает статус / заголовки ответа, без загрузки тела ответа.

Примечание: % возвращается в первую строку полезной нагрузки HTTP

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

Статус появится в шапке. Например

Вы можете напечатать код состояния в дополнение ко всем заголовкам, выполнив следующие действия:

Хорошая вещь о -i том, что это работает с -X POST .

Если вы хотите записать код состояния HTTP в переменную, но по-прежнему перенаправлять содержимое в STDOUT, необходимо создать два STDOUT. Вы можете сделать это с подстановкой процесса> () и подстановкой команды $ () .

Сначала создайте файловый дескриптор 3 для текущего процесса ‘STDOUT с exec 3>&1 .

Затем используйте параметр curl, -o чтобы перенаправить содержимое ответа во временный fifo с помощью подстановки команд, а затем в рамках этой подстановки команд перенаправить вывод обратно в дескриптор файла текущего процесса STDOUT 3 с помощью -o >(cat >&3) .

Собираем все вместе в bash 3.2.57(1)-release (стандарт для macOS ):

Обратите внимание, что это не работает, /bin/sh как SamK отметил в комментариях ниже .

Переопределить вывод curl:

Может использоваться с любым типом запроса.

ТОЛЬКО код состояния

Все заслуги в этом GIST

Это болезненное curl —fail ограничение. От man curl :

-f, —fail (HTTP) Fail молча (без вывода вообще) при ошибках сервера

Но нет способа получить и ненулевой код возврата, и тело ответа в stdout.

Эта функция ведет себя точно так же curl , но вернет 127 (код возврата не используется curl ) в случае HTTP-кода в диапазоне [400, 600 [.

Это отправит запрос на URL, получит только первую строку ответа, разделит его на блоки и выберет вторую.

Содержит код ответа

Для запроса POST сработало следующее:

Используйте следующую команду cURL и передайте ее в grep следующим образом:

Вот что делает каждый флаг:

  • -I : Показать только заголовки ответа
  • -s : Silent — не показывать индикатор выполнения
  • -L : Следуйте Location: заголовкам

Запустите из командной строки. Этот curl работает в режиме без вывода сообщений, следует за любыми перенаправлениями, получает заголовки HTTP. grep выведет код состояния HTTP на стандартный вывод.

Это вернет следующую информацию:

  1. данные ответа, если какие-либо данные возвращаются API, как ошибка
  2. код состояния

Вот некоторая команда curl, которая использует GET и возвращает код HTTP.

Пожалуйста, помните, что используется приведенный ниже подход HEAD , который работает быстрее, но он может не работать с некоторыми менее веб-HTTP-серверами.

Пример использования кодов ответов. Я использую это для повторной загрузки баз Geolite, только если они изменились ( -z ), а также после перенаправлений ( -L ):

ОП хочет знать код статуса. Часто при загрузке файла вы также хотите почувствовать его размер, поэтому я сначала использую curl, чтобы показать код состояния и размер файла, а затем отключить подробный и направить файл в нужное место и имя:

Потом жду финиша скручивания

перед тем, как запустить следующую команду. Выше, когда используется в сценарии многих команд, как выше, дает хороший ответ, как:

Обратите внимание, что -o в curl должен сопровождаться полным путем файла + именем файла. Таким образом, это позволяет вам сохранять файлы с разумной структурой имен, когда вы добавляете их с помощью curl. Также обратите внимание, что -s и -S, используемые вместе, отключают вывод, но показывают ошибки. Также обратите внимание, что -R пытается установить временную метку файла для веб-файла.

Читайте также:  How to set java home linux

Мой ответ основан на том, что первоначально предложил @pvandenberk, но кроме того, он фактически сохраняет файл где-то, а не просто указывает на / dev / null.

Источник

🌐 Проверьте доступность веб-сайта из командной строки Linux

Вы можете легко проверить доступность веб-сайта из командной строки Linux и получить коды состояния с веб-сервера, используя такие команды, как TELNET или CURL.

Проверить доступность сайта с помощью CURL

Выполните следующую команду, чтобы проверить, работает ли веб-сайт и какое сообщение о состоянии показывает веб-сервер:

Код состояния «200 OK» означает, что запрос успешно выполнен и веб-сайт доступен.

Вот еще один пример, который показывает вам, как curl отображает различные коды состояния.

301 это редирект с https на http

Проверить доступность сайта с помощью TELNET

Вы также можете проверить доступность веб-сайта и получить код ответа с помощью команды telnet:

Вы получите вывод следующим образом:

  • Аудит ИБ (44)
  • Вакансии (10)
  • Закрытие уязвимостей (98)
  • Книги (27)
  • Мануал (1 937)
  • Медиа (66)
  • Мероприятия (38)
  • Мошенники (22)
  • Обзоры (724)
  • Обход запретов (33)
  • Опросы (3)
  • Скрипты (106)
  • Статьи (292)
  • Философия (77)
  • Юмор (17)

Anything in here will be replaced on browsers that support the canvas element

Источник

Проверка кода ответа сервера и http заголовков

Когда мы открываем любую веб-страницу нужного нам сайта вместе с HTML кодом страницы сервер передает код статуса запроса и http заголовки. По коду статуса программы могут быстро определить все ли прошло успешно или, например, такой страницы нет на сервере. Заголовки содержат информацию для браузера, которая указывает как нужно обрабатывать страницу и что с ней делать.

Обычным пользователям эта информация ни к чему, но если вы администратор сайта или технический специалист, она может быть для вас очень полезной. В этой статье мы рассмотрим как выполняется проверка кода ответа сервера и http заголовков с помощью утилиты curl.

Что такое код ответа сервера?

Для нормальной работы различных программ, работающих по протоколу HTTP сервер возвращает не только текст страницы, но и трехзначный код, который позволяет определить результат запроса. С помощью этого кода можно не только описать какая ошибка возникла во время обработки, но и перенаправить пользователя на другую страницу, или же сказать, что страница не была изменена. Вот самые распространенные коды ответа сервера:

1xx — информационные:

  • 100 — сервер принял первую часть запроса, можно подрожать передачу;
  • 101 — нужно изменить протокол работы на более подходящий;
  • 102 — на обработку запроса уйдет много времени, используется чтобы браузер не разрывал соединение раньше времени;

2хх — операция успешна:

  • 200 — запрос выполнен успешно, отправляется для большинства запрашиваемых страниц;
  • 201 — после выполнения запроса был создан ресурс;
  • 202 — запрос принят, но еще не обработан;
  • 203 — запрос выполнен успешно, но информация для ответа взята из прокси;
  • 204 — запрос обработан, но контента для отображения нет;
  • 205 — попросить пользователя ввести необходимые данные;
  • 206 — запрос обработан, но передана только часть контента;

3xx — перенаправления:

  • 300 — есть несколько страниц для этого запроса, например, на нескольких языках;
  • 301 — страница навсегда перемещена по новому адресу;
  • 302 — документ был временно перемещен;
  • 303 — документ необходимо загрузить по указанному адресу с помощью протокола GET;
  • 304 — документ не изменился с последнего запроса;
  • 305 — нужно использовать прокси;
  • 307 — ресурс временно перемещен на новый адрес.

4хх — ошибка в запросе:

  • 400 — неверный запрос;
  • 401 — необходимо аутентифицироваться;
  • 403 — запрос принят, но у вас нет доступа;
  • 404 — страница не найдена на сервере;
  • 405 — используемый метод нельзя применять на сервере;
  • 408 — время ожидания передачи запроса истекло;
  • 410 — ресурс полностью удален;
  • 411 — нужно указать длину запроса;
  • 413 — запрос слишком длинный;
  • 414 — URI запроса слишком длинная.

5хх — ошибка сервера:

  • 500 — внутренняя ошибка сервера;
  • 501 — нужная функция не поддерживается;
  • 502 — прокси не может соединиться со шлюзом;
  • 503 — сервер не может обрабатывать запросы по техническим причинам;
  • 504 — прокси не дождался ответа от сервера;
  • 505 — версия протокола HTTP не поддерживается.

Что такое http заголовки?

С помощью http заголовков клиент и сервер обмениваются информацией и командами между собой. Они используются для согласования метода, протокола, кодировки, языка и многих других параметров работы. Рассмотрим основные заголовки, которые будет отправлять сервер:

  • Server — имя и версия веб-сервера;
  • Date — дата осуществления запроса;
  • Content-Type — MIME тип передаваемых данных, например, text/html, тут же задается кодировка;
  • Connection — тип соединения, может быть closed — уже закрыто, или keep-alive — открыто для передачи данных;
  • Vary — указывает при каких заголовках веб-сервер будет возвращать разные старины для одного URI;
  • Set-Cookie — сохранить Cookie информацию для страницы;
  • Expires — можно хранить страницу или ресурс в кэше до определенной даты;
  • Cache-Control — настройка времени кэширования страницы браузером, а также разрешения на кэширования;
  • ETag — содержит контрольную сумму для страницы, применимо для проверки кэша;
  • Last-Modified — дата, когда страница последний раз была изменена;
Читайте также:  Synaptic linux ��� ���

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

Проверка кода ответа сервера с помощью cURL

Чтобы увидеть только код ответа страницы достаточно выполнить такую команду:

curl -s -o /dev/null -w «%» https://losst.ru

Или, если хотите, чтобы ответ выглядел более естественно:

curl -I https://losst.ru 2>/dev/null | head -n 1 | cut -d$’ ‘ -f2

Страницы вернули 200, все в порядке. Но отправляет ли сервер редирект для нужных нам страниц? Если ваш сайт работает на https, то все запросы http должны перекидываться на https, также для любого сайта, все запросы на www домен должны перенаправляться на основной, или наоборот. Запросы на ip сайта тоже в идеале должны отправляться на основной домен. Проверка http ответа:

curl -I http://losst.ru 2>/dev/null | head -n 1 | cut -d$’ ‘ -f2

curl -I https://www.losst.ru 2>/dev/null | head -n 1 | cut -d$’ ‘ -f2

Все работает так, как нужно. Но смотреть код ответа сервера вряд ли понадобиться, намного интереснее проверка http статусов.

Проверка http заголовков с помощью Curl

Для проверки заголовков мы тоже можем использовать утилиту curl. Чтобы вывести заголовки страницы запустите ее с опцией -I:

curl -I https://losst.ru

Здесь отображается код ответа сервера, а также принятые http заголовки. Из них мы можем сделать такие выводы:

  • Страница сгенерирована в nginx 1.10.2;
  • Это обычная html страница (text/html);
  • Размер страницы 102452 байт или 100 кб;
  • Страница последний раз изменялась 18:13:12 (last_modified) это очень важный параметр для поисковых систем;
  • Сервер будет выдавать разные версии страниц при изменении поля Accept-Encoding (Vary);
  • Страница может храниться в любом кэше (public) на протяжении часа (expires);

Таким способом может быть выполнена проверка http заголовков для любой страницы или ресурса чтобы сразу определить все ли отправляется правильно. Например, посмотрим заголовки для изображения:

curl -I https://losst.ru/wp-content/uploads/2016/08/map-2.png

Мы можем видеть, что картинка будет храниться в кэше намного дольше (max-age) чем html страница.

Осталось проверить работают ли такие заголовки, как If-Modified-Since и If-None-Match. Первый позволяет выполнять проверку актуальности кэша по дате модификации, второй — по контрольной сумме поля ETag. Кэш очень важен, чтобы снизить нагрузку на ваш сервер. Если страница не изменилась, то сервер лишь сообщает что она не изменилась, отправляя код ответа 304, вместо передачи полного файла.

Конечно, вы можете использовать для этого онлайн сервисы, но работают они плохо и не всегда показывают верное значение. Поэтому пользуемся опять curl.

Проверка If-Modified-Since

Сначала запрашиваем нашу страницу для просмотра заголовков http, а затем копируем поле Last-Modified:

curl -I https://losst.ru

Теперь запрашиваем ее еще раз, но уже с заголовком If-Modified-Since: и ваша дата:

curl -I —header ‘If-Modified-Since: Mon, 26 Dec 2016 18:13:12 GMT’ https://losst.ru

В ответ вы должны получить не саму страницу, а только заголовок HTTP/1.1 304 Not Modified. Если так, значит проверка кода ответа сервера пройдена и все работает верно.

Проверка If-None-Match

Заголовок If-None-Match работает похожим образом, только здесь используется значение контрольной суммы кэша из поля ETag. Опять запросим нашу страницу и скопируем сумму:

curl -I https://losst.ru

Затем отправим полученную сумму с заголовком:

curl -I —header ‘If-None-Match: «58615db8-19034″‘ https://losst.ru

И снова мы должны получить ответ 304, страница не изменена.

Проверка сжатия

Сжатие позволяет уменьшить размер передаваемых данных, но в то же время создает дополнительную нагрузку на сервер. Чтобы проверить поддерживает ли сервер сжатие gzip нужно отправить в запросе заголовок Accept-Encoding с параметром gzip:

curl -I https://losst.ru —header ‘Accept-Encoding: gzip’

В ответе мы увидим поле Content-Encoding: gzip. Это будет означать, что сжатие используется.

Выводы

В этой статье мы рассмотрели как выполняется проверка ответа сервера и проверка http заголовков, это может быть очень полезно для аудита технической стороны вашего сайта, а также для решения определенных проблем. Надеюсь, изложенная в статье информация была вам полезной.

Источник

Оцените статью