Comment passer l'en-tête d'autorisation en utilisant cURL ? ( exécutable dans /usr/bin/curl
).
@Vixed Cette question ne porte pas explicitement sur PHP. [Quel est le problème avec les résultats de Google ?
Comment passer l'en-tête d'autorisation en utilisant cURL ? ( exécutable dans /usr/bin/curl
).
http://curl.se/docs/httpscripting.html
Voir la partie 6. Authentification HTTP
Authentification HTTP
L'authentification HTTP est la capacité de dire au serveur votre nom d'utilisateur et votre mot de passe afin qu'il puisse vérifier que vous êtes autorisé à effectuer la requête que vous demande que vous effectuez. L'authentification basique utilisée en HTTP (qui est le type que curl utilise par par défaut) est simple texte ce qui signifie qu'il envoie le nom d'utilisateur et le mot de passe. seulement légèrement obscurcis, mais toujours entièrement lisibles par quiconque renifle le le réseau entre vous et le serveur distant.
Pour dire à curl d'utiliser un utilisateur et un mot de passe pour l'authentification :
curl --user name:password http://www.example.com
Le site peut exiger une méthode d'authentification différente (vérifiez les en-têtes retournés par le serveur), puis --ntlm, --digest, --negotiate ou même --anyauth peuvent être des options qui vous conviennent.
Parfois, l'accès HTTP n'est disponible que par l'utilisation d'un HTTP . Cela semble être particulièrement fréquent dans certaines entreprises. Un proxy HTTP peut nécessiter son propre utilisateur et son propre mot de passe pour permettre au client d'accéder à l'Internet. Pour les spécifier avec curl, exécutez quelque chose comme :
curl --proxy-user proxyuser:proxypassword curl.haxx.se
Si votre proxy exige que l'authentification se fasse par la méthode NTLM, utilisez --proxy-ntlm, s'il requiert Digest utilisez --proxy-digest.
Si vous utilisez l'une de ces options utilisateur+mot de passe mais que vous omettez le mot de passe curl demandera le mot de passe de manière interactive.
Notez que lorsqu'un programme est exécuté, il est possible de voir ses paramètres en listant les processus en cours d'exécution du système. Ainsi, d'autres utilisateurs peuvent être peuvent voir vos mots de passe si vous les passez en tant qu'options de ligne de de ligne de commande. Il existe des moyens de contourner ce problème.
Il est intéressant de noter que si c'est ainsi que fonctionne l'authentification HTTP, très nombreux sites Web n'utilisent pas ce concept lorsqu'ils fournissent des identifiants, etc. Voir le chapitre sur la connexion Web ci-dessous pour plus de détails à ce sujet.
De nombreuses API utilisent désormais des jetons d'autorisation d'en-tête. Le site -H
L'option est excellente.
Si vous utilisez -u ou --user, Curl codera les informations d'identification en Base64 et produira un en-tête comme celui-ci : -H Authorization: Basic <Base64EncodedCredentials>
J'essaie d'ajouter un en-tête d'autorisation avec HMAC-SHA256
Je reçois toujours une erreur d'en-tête d'autorisation manquante
(pour ceux qui recherchent php-curl réponse)
$service_url = 'https://example.com/something/something.json';
$curl = curl_init($service_url);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "username:password"); //Your credentials goes here
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $curl_post_data);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); //IMP if the url has https and you don't want to verify source certificate
$curl_response = curl_exec($curl);
$response = json_decode($curl_response);
curl_close($curl);
var_dump($response);
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.