web-dev-qa-db-fra.com

Que fait CURLOPT_USERPWD de php

Je me demandais ce que CURLOPT_USERPWD fait réellement à l'url, à l'en-tête ou aux données d'une demande. Est-ce au lieu de Authorization: Basic <base64 of user:pass> ou ça marche à côté de ça?

Est-ce que cela modifie l'URL?:

username:[email protected]

J'ai vu du code comme celui-ci, donc je me demande, car il semble que si je demande que l'URL dans une demande équivalente NodeJS ne fonctionne pas qu'avec un en-tête d'autorisation (j'ai une théorie selon laquelle le serveur est cassé et ignore l'en-tête Auth et utilise le nom d'utilisateur: mot de passe dans l'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);

Merci

19
Dominic

Est-ce que cela modifie l'URL?:

username:[email protected]

Non, l'URL est toujours la même. Vous pouvez vérifier avec

curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);

Cette

$encodedAuth = base64_encode(self::$pfAdapterUser.":".self::$pfAdapterPasswd);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: Basic ".$encodedAuth));

Et ça

curl_setopt($ch, CURLOPT_USERPWD, self::$pfAdapterUser.":".self::$pfAdapterPasswd);

font la même chose donc il n'est pas nécessaire de les utiliser ensemble (même si cela ne cassera pas), utilisez-en un et cela fonctionnera bien.

39
hlscalon