Мне было интересно, что CURLOPT_USERPWD действительно делает с url, заголовком или данными запроса. Является ли это ВМЕСТОЙ Authorization: Basic <base64 of user:pass>
или он работает вместе с этим?
Могу ли я изменить этот URL ?:
username:password@someurl.com
Я видел такой код, так что мне интересно, как мне кажется, если я запрошу этот url в эквивалентном запросе NodeJS, он не работает с только заголовком авторизации (у меня есть теория, что сервер сломан и игнорирует заголовок Auth и использует имя пользователя: пароль в URL-адресе):
curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $encodedAuth = base64_encode(self::$pfAdapterUser.":".self::$pfAdapterPasswd); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authentication : Basic ".$encodedAuth)); curl_setopt($ch, CURLOPT_USERPWD, self::$pfAdapterUser.":".self::$pfAdapterPasswd); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLINFO_HEADER_OUT, true);
благодаря
Могу ли я изменить этот URL ?:
username:password@someurl.com
Нет, URL все тот же. Вы можете проверить
curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
Эта
$encodedAuth = base64_encode(self::$pfAdapterUser.":".self::$pfAdapterPasswd); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization : Basic ".$encodedAuth));
И это
curl_setopt($ch, CURLOPT_USERPWD, self::$pfAdapterUser.":".self::$pfAdapterPasswd);
делают то же самое, поэтому нет необходимости использовать их вместе (хотя он не сломается), используйте один, и он будет работать нормально.