Как пользоваться composer

Деградированный режим

Из-за некоторых прерывистых проблем на Travis и других системах мы ввели деградировавший сетевой режим,который помогает Composer успешно закончить,но отключает несколько оптимизаций.Он включается автоматически при первом обнаружении проблемы.Если вы видите эту проблему спорадически,вам,вероятно,не нужно беспокоиться (медленная или перегруженная сеть также может вызывать эти тайм-ауты),но если она появляется несколько раз,вы,возможно,захотите посмотреть на опции ниже,чтобы определить и решить ее.

Если вас указали на эту страницу,вы хотите проверить несколько вещей:

  • Если вы используете антивирус ESET,перейдите в «Дополнительные настройки» и отключите «HTTP-сканер» в разделе «Защита веб-доступа».

  • Если вы используете IPv6,попробуйте отключить его.Если это решает ваши проблемы,свяжитесь с вашим провайдером или хостом сервера,проблема не на уровне Пакагиста,а в правилах маршрутизации между вами и Пакагистом (т.е.Интернет в целом).Лучший способ получить это исправление-это повысить осведомленность сетевых инженеров,которые имеют возможность это исправить.Взгляните на следующий раздел обходных путей IPv6.

  • Если ничего из вышеперечисленного не помогло,пожалуйста,сообщите об ошибке.

8 ответов

Лучший ответ

Чтобы устранить проблему, удалите истекший корневой сертификат из сертификата вашего домена.

  1. Перейдите на https://whatsmychaincert.com.
  2. Проверьте свой сервер
  3. Если они подтвердят, что у вас есть истекший корневой сертификат, загрузите и используйте .crt без этого сертификата.

(необязательно) К тому времени, когда вы это делаете, вы можете использовать это временное исправление скручивания, чтобы на вашем сайте не было ошибки: Добавьте эту опцию:

32

Manu
3 Июн 2020 в 08:25

Если у вас есть эта проблема с «curl» (или подобным) в системе Ubuntu 16, вот как мы ее исправили:

В системе Ubuntu 16, в которой находится приложение curl / app, которое не работает:

  • nano /etc/ca-certificates.conf
  • Удалите строку (или комментарий), указав AddTrust_External_Root.crt
  • apt update && apt установить ca-сертификаты
  • Обновить-CA-сертификаты -f -v
  • Попробуйте снова свернуться с URL-адресом, который раньше был неудачным — надеюсь, он работает сейчас :)

13

mrmuggles
30 Май 2020 в 20:10

У нас возникла та же проблема, после некоторого устранения неполадок мы обнаружили, что срок действия корневых сертификатов COMODO истек.

Мы проверили это с помощью: https://www.ssllabs.com/ssltest/index.htmlа> . И мы решили это, загрузив сертификаты только что у нашего торгового посредника.

1

SjamonDaal
2 Июн 2020 в 16:16

У нас такая же ошибка. Для решения вашей проблемы обновите ваш «SSLCertificateChainFile» самой новой версией вашего доверенного сайта SSL. В нашем случае это comodo.

Вам нужно перейти на ваш доверенный сайт и найти под вашими сертификатами «CA-CRT». Скопируйте контент.

  1. Перейдите на ваш / etc / apache2 / sites-available
  2. Найдите строку с «SSLCertificateChainFile».
  3. Затем отредактируйте файл и замените содержимое новыми значениями CA-CRT.
  4. Затем перезапустите ваш веб-сервер, в нашем случае это apache: service apache2 restart или systemctl restart apache2

Если вы не можете перезапустить Apache, проще всего перезагрузить ваш экземпляр.

1

Rick
1 Июн 2020 в 10:06

Постоянным решением будет перевыпустить SSL-сертификат у вашего провайдера и переустановить его на вашем сервере.

Переизданный сертификат обновит пакет CA.

Ура!

1

Jerahmeel Anibor
31 Май 2020 в 22:03

Похоже, ваше хранилище доверенных сертификатов не обновлено последним доверенным корнем. Понимание того, что это случилось с вами, началось вчера, 30 мая. Я предполагаю, что у вас есть Sectigo в качестве вашего CA.

Обновите свой список пользователей, и вы сможете подключиться.

3

Abhishek Shah
31 Май 2020 в 21:23

Для ubuntu 14.04

Откройте свой терминал

Затем и снимите флажок mozilla / AddTrust_External_Root.crt и проверьте mozilla / 2_Root_USERTrust_RSA_Certification_Authority.crt или запустите для снятия отметки.

6

The kira
1 Июн 2020 в 10:51

Мне пришлось исправить эту проблему на сервере Debian

Это было связано с использованием системы openssl (curl зависит от openssl)

Вот как это произошло:

  1. удалите AddTrust_External_Root.crt из вашей системы (обычно находится в )
    1. удалите или закомментируйте строку «mozilla / AddTrust_External_Root» из
    2. запустите , чтобы обновить сертификаты, используемые openssl Ол >

Может это может помочь тебе?

1

Elvandar
3 Июн 2020 в 16:38

Передача параметров формы и заголовков

В отличие от GET, запрос POST передается не в ссылке на сайт, а в теле запроса. Чтобы проверить работоспособность программы, используется обращение к адресу https://postman-echo.com/post. Во время настройки на вкладке Body нужно включить режим form-data, затем внести схожие параметры и нажать на кнопку Send.

Если взаимодействие по API требует передачи токенов авторизации, понадобится привлечь к этому HTTP-заголовки. Такой формат работы используется, например, в движке Xenforo, написанном на PHP для развертывания форумов. Для передачи в заголовке какой-либо информации нужно зайти на вкладку Headers и добавить любое имя со значением (на выбор пользователя). После отправки информации внизу окна будет отображен ответ сервера.

Добавить дополнительный заголовок

Вы можете добавить заголовок к запросу с помощью синтаксиса — header.

# curl –-header “X-CustomHeader: GeekFlare” http://yoururl.com

например:

# curl -v --header "X-CustomHeader: GeekFlare" 74.125.68   
* About to connect() to 74.125.68.100 port 80 (#0)   
*   Trying 74.125.68.100...   
* Connected to 74.125.68.100 (74.125.68.100) port 80 (#0)   
> GET / HTTP/1.1   
> User-Agent: curl/7.29.0   
>Host: 74.125.68.100   
>Accept: */*   
> X-CustomHeader: GeekFlare
>< HTTP/1.1 200 OK   
<Date: Sun, 18 Jan 2015 08:30:25 GMT   
<Expires: -1   
< Cache-Control: private, max-age=0   
< Content-Type: text/html; charset=utf-8   
< Set-Cookie: NID=67=CkzDX-zTtWA0d9M1QVG4O3Im; 
expires=Mon, 20-Jul-2015 08:30:25 GMT; 
path=/; domain=.; HttpOnly
< P3P: CP="This is not a P3P policy! 
See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for moreinfo."   
< Server: gws
< X-XSS-Protection: 1; mode=block
< X-Frame-Options: SAMEORIGIN   
<Alternate-Protocol: 80:quic,p=0.02   
<Accept-Ranges: none
<Vary: Accept-Encoding
<Transfer-Encoding: chunked

Dependencies on the root package#

When your root package depends on a package which ends up depending (directly or
indirectly) back on the root package itself, issues can occur in two cases:

  1. During development, if you are on a branch like and the branch has no
    defined, and the dependency on the root package
    requires version for example, the version will not satisfy it.
    The best solution here is to make sure you first define a branch alias.

  2. In CI (Continuous Integration) runs, the problem might be that Composer is not able
    to detect the version of the root package properly. If it is a git clone it is
    generally alright and Composer will detect the version of the current branch,
    but some CIs do shallow clones so that process can fail when testing pull requests
    and feature branches. In these cases the branch alias may then not be recognized.
    The best solution is to define the version you are on via an environment variable
    called COMPOSER_ROOT_VERSION. You set it to for example to define
    the root package’s version as .
    Use for example: to export
    the variable only for the call to composer, or you can define it globally in the
    CI env vars.

Версии пакета

В приведенном выше описании вы видели такие номера версий:или же. Что они означают и какие еще спецификаторы версии можно использовать?

Этот символ указывает, какие обновления принимает ваш пакет, исходя из этой зависимости.

Учитывая, что при использовании semver (семантическое управление версиями) все версии имеют 3 цифры, первая из которых является основным выпуском, вторая — второстепенным выпуском, а третья — выпуском патча, у вас есть следующие правила:

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

Есть и другие правила:

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

и вы можете комбинировать большинство из вышеперечисленных в диапазонах, например:, чтобы использовать 1.0.0 или одну версию от 1.1.0 и выше, но ниже 1.2.0.

Скачать мою бесплатнуюСправочник по Node.js

Исключения при обработке ошибок

Guzzle генерирует исключения для ошибок, возникающих во время передачи:

В случае сетевой ошибки (тайм-аут соединения, ошибки DNS и т.д.) выдается сообщение . Это исключение распространяется на . Поймав это исключение, вы поймете любое исключение, которое может быть сгенерировано при передаче запросов.

use GuzzleHttp\Psr7;
use GuzzleHttp\Exception\RequestException;

try {
  $client->request('GET', 'https://github.com/_abc_123_404');
} catch (RequestException $e) {
  echo Psr7\str($e->getRequest());
  if ($e->hasResponse()) {
    echo Psr7\str($e->getResponse());
  }
}

Исключение выдается в случае сетевой ошибки. Это исключение происходит от .
выбрасывается для ошибок уровня 400, если для параметра запроса установлено значение . Это исключение распространяется на и распространяется на .

use GuzzleHttp\Exception\ClientException;

try {
  $client->request('GET', 'https://github.com/_abc_123_404');
} catch (ClientException $e) {
  echo Psr7\str($e->getRequest());
  echo Psr7\str($e->getResponse());
}

генерируется для ошибок уровня 500, если для параметра запроса установлено значение . Это исключение происходит от .

генерируется, когда выполняется слишком много перенаправлений. Это исключение происходит от .

Все вышеперечисленные исключения происходят из .

Загрузка файлов методом POST

Для HTTP запроса типа POST существует два варианта передачи полей из HTML форм, а именно, используя алгоритм и . Алгоритм первого типа создавался давным-давно, когда в языке HTML еще не предусматривали возможность передачи файлов через HTML формы.

Со временем возникла необходимость через формы отсылать еще и файлы. Тогда консорциум W3C взялся за доработку формата POST запроса, в результате чего появился документ RFC 1867. Форма, которая позволяет пользователю загрузить файл, используя алгоритм , выглядит примерно так:

<form action="/upload.php" method="POST" enctype="multipart/form-data">
    <input type="file" name="upload">
    <input type="submit" name="submit" value="OK">
</form>

Чтобы отправить на сервер данные такой формы:

> curl -F [email protected] -F submit=OK http://www.example.com/upload.php

Скрипт , который принимает данные формы:

<?php
print_r($_POST);
print_r($_FILES);
move_uploaded_file($_FILES'upload''tmp_name', 'image.jpg');

Ответ сервера:

Array
(
     => OK
)
Array
(
     => Array
        (
             => image.jpg
             => image/jpeg
             => D:\work\temp\phpB02F.tmp
             => 0
             => 2897
        )
)

«Непростые» запросы

Мы можем использовать любой HTTP-метод: не только , но и , и другие.

Некоторое время назад никто не мог даже предположить, что веб-страница способна делать такие запросы. Так что могут существовать веб-сервисы, которые рассматривают нестандартный метод как сигнал: «Это не браузер». Они могут учитывать это при проверке прав доступа.

Поэтому, чтобы избежать недопониманий, браузер не делает «непростые» запросы (которые нельзя было сделать в прошлом) сразу. Перед этим он посылает предварительный запрос, спрашивая разрешения.

Предварительный запрос использует метод , у него нет тела, но есть два заголовка:

  • содержит HTTP-метод «непростого» запроса.
  • предоставляет разделённый запятыми список его «непростых» HTTP-заголовков.

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

  • должен содержать разрешённые методы.
  • должен содержать список разрешённых заголовков.
  • Кроме того, заголовок может указывать количество секунд, на которое нужно кешировать разрешения. Так что браузеру не придётся посылать предзапрос для последующих запросов, удовлетворяющих данным разрешениям.

Этот запрос не является простым по трём причинам (достаточно одной):

  • Метод
  • не один из: , , .
  • Содержит «непростой» заголовок .

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

  • Метод: .
  • Путь – точно такой же, как в основном запросе: .
  • Особые заголовки:
    • – источник.
    • – запрашиваемый метод.
    • – разделённый запятыми список «непростых» заголовков запроса.

Сервер должен ответить со статусом 200 и заголовками:

  • .

Это разрешит будущую коммуникацию, в противном случае возникает ошибка.

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

Теперь, когда браузер видит, что есть в , а – в списке , он посылает наш основной запрос.

Кроме того, ответ на предзапрос кешируется на время, указанное в заголовке (86400 секунд, один день), так что последующие запросы не вызовут предзапрос. Они будут отосланы сразу при условии, что соответствуют закешированным разрешениям.

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

Основной запрос имеет заголовок (потому что он идёт на другой источник):

Сервер не должен забывать о добавлении к ответу на основной запрос. Успешный предзапрос не освобождает от этого:

После этого JavaScript может прочитать ответ сервера.

Предзапрос осуществляется «за кулисами», невидимо для JavaScript.

JavaScript получает только ответ на основной запрос или ошибку, если со стороны сервера нет разрешения.

Скачивание больших файлов с помощью cURL

Для того, чтобы скачать большой файл пригодится этот способ:

$url = 'https://example.com/big_file.zip'; // откуда скачиваем файл
$path = __DIR__ . '/big_file.zip';  // куда сохраняем файл

$fp = fopen($path, 'w');
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$data = curl_exec($ch);
curl_close($ch);
fclose($fp);

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

Также к памяти будет требователен следующий код:

$ch = curl_init('https://example.ru/big_file.zip');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$data = curl_exec($ch);
curl_close($ch);

file_put_contents(__DIR__ . '/big_file.zip', $data);

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

Что такое curl?

На самом деле, curl — это больше чем просто утилита командной строки для Linux или Windows. Это набор библиотек, в которых реализуются базовые возможности работы с URL страницами и передачи файлов. Библиотека поддерживает работу с протоколами: FTP, FTPS, HTTP, HTTPS, TFTP, SCP, SFTP, Telnet, DICT, LDAP, а также POP3, IMAP и SMTP. Она отлично подходит для имитации действий пользователя на страницах и других операций с URL адресами.

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

Запросы и ответы содержат заголовки

При вводе адреса веб-сайта мы видим только текст ответа. Но на самом деле происходит гораздо больше процессов. Когда мы делаем запрос, мы отправляем заголовок запроса, который содержит информацию о запросе. Ответ также содержит заголовок ответа.

Для того чтобы увидеть заголовок ответа в запрос curl, добавим ключ :

Заголовок будет включен над телом ответа:

Чтобы в ответе получить только заголовок, используем ключ

Заголовок содержит метаданные ответа. Вся эта информация передается в браузер при запросе URL в нашем браузере (например, при просмотре веб-страницы в Интернете), но браузер не отображает эту информацию. Можно просмотреть информацию заголовка с помощью консоли Chrome Developer Tools, перейдя на вкладку .

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

При посещении веб-сайта мы отправляем запрос, используя метод GET. Существуют и другие методы HTTP, которые можно использовать при взаимодействии с REST API. Вот общие методы, используемые при работе с конечными точками REST:

HTTP метод Описание
POST Создание ресурса
GET Чтение (получение) ресурса
PUT Обновление ресурса
DELETE Удаление ресурса

Note: Метод GET используется по умолчанию в запросах curl. При использовании curl для выполнения запросов HTTP, отличных от GET, необходимо указывать нужный метод HTTP.

Иммитация браузера с помощью cURL

Иногда сайт, к которому мы обращаемся может фильтровать запросы, защищаясь от парсинга. Если для этого используются упрощенные способы защиты, например проверка User-Agent, то мы можем легко притвориться, что являемся реальным польователем, который взаимодействует с сайтом через браузер, мы можем послать заголовки и cookie, которые обычно посылает браузер.

В данном примере установлены заголовки, которые посылает Chrome.

$url = 'https://phpstack.ru/';

$headers = [
    'Connection: keep-alive',
    'Upgrade-Insecure-Requests: 1',
    'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
    'Accept-Encoding: gzip, deflate',
    'Accept-Language: ru,en-US;q=0.9,en;q=0.8',
];

$cookieFile = __DIR__ . '/cookie.txt';

$curl = curl_init(); // создаем экземпляр curl

curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookieFile);
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookieFile);
curl_setopt($curl, CURLOPT_POST, false); //
curl_setopt($curl, CURLOPT_URL, $url);

$result = curl_exec($curl);

В простых ситуациях этого хватает. Но если используется защита при помощи javascript или что-то более продвинутое, то здесь cURL бессилен, и следует использовать либо BAS либо Zennoposter. Либо если вы хотите попытать счастье с PHP, то Selenium.

Не используйте эти знания в противоправных целях.

Cookies

Guzzle может поддерживать для вас сеанс файлов cookie, если это указано с помощью параметра запроса файлов cookie. При отправке запроса параметр cookie должен быть установлен на экземпляр :

// Использование конкретного cookie jar
$jar = new \GuzzleHttp\Cookie\CookieJar;
$r = $client->request('GET', 'http://httpbin.org/cookies', );

Можно установить для cookie значение в конструкторе клиента, если хотите использовать общий файл cookie для всех запросов:

// Используем общий клиентский файл cookie
$client = new \GuzzleHttp\Client();
$r = $client->request('GET', 'http://httpbin.org/cookies');

Строки запроса и параметры

Параметры почтового индекса (), идентификатора приложения () и единиц () были переданы в конечную точку с помощью «строк запроса». Знак добавленный к URL указывает начало строки запроса. Параметры строки запроса — это параметры, которые появляются после знака :

После строки запроса каждый параметр объединяется с другими параметрами через символ амперсанда . Порядок параметров в строке запроса не имеет значения. Порядок имеет значение только в том случае, если параметры находятся слева от строки запроса (и, следовательно, являются частью самого URL-адреса). Любые настраиваемые части конечной точки, которые появляются перед строкой запроса, называются (разберем их позже).

Настройка SSL, TLS в NGINX

Открываем конфигурационный файл вашего сайта.
Если NGINX настроен как тут, то конфигурационный файл может быть расположен тут:

Для уменьшения загрузки процессора официальная документация рекомендует

  • установить число рабочих процессов равным числу процессоров,
  • разрешить keep-alive соединения,
  • включить разделяемый кэш сессий,
  • выключить встроенный кэш сессий
  • и, возможно, увеличить время жизни сессии (по умолчанию 5 минут):

Изменения я буду комментировать

# Создаём отдельный server для перенаправления с http на https
server {
 server_name example.com www.example.com;  # Можно указать любые домены и поддомены, смотря как вы настроили сертификат
 listen 1.2.3.4:80; #где 1.2.3.4 - айпи вашего сервера
 rewrite ^(.*) https://$host$1 permanent; # Редирект HTTP/1.1 301 Moved Permanently с http на https
}

# А это основной сервер с https
server {
  server_name example.com www.example.com;  # Копируем из верхнего сервера
  listen 1.2.3.4:443 ssl http2; #вместо 1.2.3.4 вставляете IP своего сервера. http2 включчает поддержку протокола http/2

  ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # Сертификат
  ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # Ключ

  # Рекомендации по кешированию запросов
  keepalive_timeout   70; # 70 секунд держим соединение открытым
  keepalive_requests 150; # 150 запросов максимум на 1 соединение, после закрываем
  ssl_session_cache   shared:SSL:10m; # Разделяемый между всеми процесами кеш сессий на 10 байт с названием SSL. 1 Мб вмещает около 4000 сессий
  ssl_session_timeout 10m; # 10 минут - максимальное время жизни сессии

  # А строки ниже - для усиления безопасности соединения
  ssl_prefer_server_ciphers on; # Указывает, чтобы при использовании протоколов SSLv3 и TLS серверные шифры были более приоритетны, чем клиентские
  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA; # Типы шифров
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Разрешённые типы протоколов

... # Тут остальные правила NGINX

Сохранили, проверили, перезагрузили

nginx -t && service nginx reload

Аутентификация

Посмотрим на три способа аутентификации используя:  базовую (Basic), с использованием сертификата, NTLM и Kerberos.

Базовая аутентификация

Обычно сервер передает дополнительные данные для аутентификации, но в примере ниже это выполнение без их использования:

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

NTLM и Kerberos

Если вам нужно пройти аутентификацию для текущего пользователя вы можете добавить ключ -DefaultCredentials:

Этот ключ не будет работать вместе с аутентификацией типа Basic. 

Настройка

Как всякий серьезный софт, curl требует установки в операционной системе. Хорошая новость: скорее всего, он уже установлен! Точнее, встроен в операционку. Уважающий себя тестировщик, разумеется, работает в Linux, а почти каждый дистрибутив Linux уже идет с curl. Более того, даже Windows 10 (начиная с версии 1803) поставляется с curl.

Проверим, есть ли в системе curl.

В Linux набираем в терминале:

curl --version

Если все-таки работаешь в Windows, то запускаешь cmd или, лучше, PowerShell:

curl.exe --version

Команда покажет версию curl, прикрепленные библиотеки, дату релиза, поддерживаемые протоколы и поддерживаемые функции. В Linux увидим следующее:

curl 7.68.0 (x86_64-pc-linux-gnu) libcurl/7.68.0 OpenSSL/1.1.1f zlib/1.2.11 brotli/1.0.7 libidn2/2.2.0 libpsl/0.21.0 (+libidn2/2.2.0) libssh/0.9.3/openssl/zlib nghttp2/1.40.0 librtmp/2.3
Release-Date: 2020-01-08
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp
Features: AsynchDNS brotli GSS-API HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM NTLM_WB PSL SPNEGO SSL TLS-SRP UnixSockets

Если введенная команда выдала ошибку, то curl не установлен, значит его надо скачать и поставить. Еще одна хорошая новость: он бесплатный (но есть нюансы, о которых в конце). Есть версии для практически всех операционных систем, размер ехе-шника не превышает 5 Мб.

Если понадобилось ознакомиться с curl, а опыта с API нет, ситуацию облегчит тестовый httpbin-сервис, примеры с которым приведены далее в этом посте.

Примечание. С этого момента, будут приводиться исключительно «линуксовые» bash-команды, для ясности и читабельности. Если ты сидишь в Windows и примеры почему-то не работают, попробуй добавлять «.exe» после команды curl, или удалять (возможные) лишние пробелы в строках (line breaks).

Брандмауэр или антивирус, блокирующие сайт

Некоторые сайты блокируются брандмауэром Windows. Для проверки можно отключить брандмауэр и попробовать зайти на нужный сайт. Если SSL-сертификат начал работать корректно, значит дело в брандмауэре. В браузере Internet Explorer вы можете внести некорректно работающий сайт в список надежных и проблема исчезнет. Однако таким образом вы снизите безопасность своего устройства, так как содержимое сайта может быть небезопасным, а контроль сайта теперь отключен.

Также SSL может блокировать антивирусная программа. Попробуйте отключить в антивирусе проверку протоколов SSL и HTTPS и зайти на сайт. При необходимости добавьте сайт в список исключений антивируса.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: