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=xxxx
in den Browser ein. Das Autorisierungsfenster wird angezeigt.
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=xxxx
dem 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 -u
Flagge 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