Was macht CURLOPT_USERPWD von php

Lesezeit: 2 Minuten

Ich habe mich gefragt, was CURLOPT_USERPWD tut tatsächlich mit der URL, dem Header oder den Daten einer Anfrage. Ist es STATT der Authorization: Basic <base64 of user:pass> oder funktioniert es nebenbei?

Ändert es die URL zu diesem?:

username:[email protected]

Ich habe einen solchen Code gesehen, also frage ich mich, wie es scheint, wenn ich diese URL in einer NodeJS-äquivalenten Anfrage anfordere, funktioniert sie nicht nur mit einem Authorization-Header (ich habe eine Theorie, dass der Server kaputt ist und den Auth-Header ignoriert und den Benutzername:Passwort in der 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);

Vielen Dank

  • Richten Sie Wireshark ein und überprüfen Sie es.

    – h2oooooo

    22. Mai 2014 um 14:20 Uhr

Benutzer-Avatar
hlscalon

Ändert es die URL zu diesem?:

username:[email protected]

Nein, die URL ist immer noch die gleiche. Sie können mit überprüfen

curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);

Dies

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

Und das

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

machen dasselbe, also müssen sie nicht zusammen verwendet werden (obwohl es nicht kaputt geht), verwenden Sie eines und es wird gut funktionieren.

  • Wenn Sie auch curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); dann ist das Verhalten anders. Wenn dies mit dem USERPWD kombiniert wird, stellt cURL zunächst eine Anfrage ohne den Authorizaion-Header, um zu sehen, wie der Server antwortet, und wählt dann die beste Authentifizierungsmethode aus.

    – Juha Palomäki

    16. Mai 2017 um 12:44 Uhr

  • Ich denke, es ist erwähnenswert, dass CURLOPT_USERPWD den Header als “Authorization: Basic” ohne das Leerzeichen nach Authorization sendet. Dies scheint eine Rolle zu spielen, da ich Ihren Code verwendet habe und er bei bestimmten Diensten fehlgeschlagen ist. Je nachdem, wie der Server die Header liest, kann der zusätzliche Platz dazu führen, dass Dinge kaputt gehen.

    – Robert Noack

    28. Januar 2019 um 17:51 Uhr

  • @RobertNoack behoben. Dieser Leerraum war nicht beabsichtigt, tks

    – hlscalon

    28. Januar 2019 um 18:51 Uhr

  • Richtig, aber wie sieht die Anfrage eigentlich aus, wenn sie gesendet wird? Als was wird es „gesendet“?

    – Oliver Dixon

    12. Dezember 2019 um 20:04 Uhr

  • @OliverDixon Es dreht den Benutzernamen und das Passwort in seine base64-Form und stellt “Authorization: Basic” voran, also sendet es es im Grunde als Authorization: Basic <base64 form of username:password>

    – Uria Victor

    12. Juni 2021 um 1:49 Uhr

1144970cookie-checkWas macht CURLOPT_USERPWD von php

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy