Warum benötigt Apache eine Autorisierung für eine URL mit Benutzername und Passwort?

Warum benötigt Apache eine Autorisierung für eine URL mit Benutzername und Passwort?

Ich erstelle eine grundlegende Autorisierung in Apache. Nur eine Zeile darin /var/www/html/remote.html.

<p>it is a test </p>

Nun müssen Benutzername und Passwort mit curl verifiziert werden.

curl -u xxxx:xxxx -v  http://111.111.111.111/remote.html
*   Trying 111.111.111.111...
* TCP_NODELAY set
* Connected to 111.111.111.111 (111.111.111.111) port 80 (#0)
* Server auth using Basic with user 'xxxx'
> GET /remote.html HTTP/1.1
> Host: 111.111.111.111
> Authorization: Basic dGVzdHBhc3M6MTIzNDU2Nzg=
> User-Agent: curl/7.52.1
> Accept: */*
> 
< HTTP/1.1 200 OK
< Date: Fri, 07 Sep 2018 03:32:42 GMT
< Server: Apache/2.4.6 (CentOS)
< Access-Control-Allow-Origin: *
< Access-Control-Allow-Methods: POST, GET, PUT, DELETE, OPTIONS
< Access-Control-Allow-Credentials: true
< Access-Control-Allow-Headers: Authorization,DNT,User-Agent,Keep-Alive,Content-Type,accept,origin,X-Requested-With
< Last-Modified: Fri, 07 Sep 2018 03:22:41 GMT
< ETag: "b2-5753f8537e26c"
< Accept-Ranges: bytes
< Content-Length: 178
< Content-Type: text/html; charset=UTF-8
< 

<p>it is a test </p>
* Curl_http_done: called premature == 0
* Connection #0 to host 111.111.111.111 left intact

Geben Sie es http://111.111.111.111/remote.html?username=xxxx&password=xxxxin den Browser ein. Das Autorisierungsfenster wird angezeigt.

Bildbeschreibung hier eingeben

Die URL enthält den richtigen Benutzernamen und das richtige Passwort, die von curl überprüft wurden. Warum kann remote.html nicht direkt angezeigt werden?
Warum kann meine URL http://111.111.111.111/remote.html?username=xxxx&password=xxxxdem Apache-Server keine Autorisierungsinformationen bereitstellen?

Antwort1

Die URL für die Basisauthentifizierung lautet

http://testpass:[email protected]/remote.html

Antwort2

HTTP Basic Auth-Anmeldeinformationen werden in einem bestimmten Header vom Client an den Server gesendet - sie sindnichtauf diese Weise an die URL angehängt. Sie können dies überprüfen, indem Sie Folgendes beachten:

curl http://111.111.111.111/remote.html?username=xxxx&password=xxxx

Funktioniert auch nicht - die -uFlagge weiß, dass sie es anders senden muss, und Ihr Browser auchwenn Sie die Anmeldeinformationen in das bereitgestellte Formular eingeben.

Antwort3

verwenden Sie Folgendes und überprüfen Sie auchAndere AntwortUndSo rufen Sie die CLI-Anmeldefunktion auf

curl --user user:pass http://myweb.com/hello.html  

verwandte Informationen