Я пытаюсь выполнить запрос GET к маршруту, для которого требуется заголовок аутентификации с именем пользователя и паролем в кодировке base64 bruce: 1234. Когда я пытаюсь:
curl -v http://localhost:3000/api/users \
-H "Authorization:Basic `echo -n bruce:1234 | base64`" \
-H "Accept:application/json"
... Я получаю следующий вывод из команды CURL:
* Trying ::1...
* TCP_NODELAY set
* Connected to localhost (::1) port 3000 (#0)
> GET /api/users HTTP/1.1
> Host: localhost:3000
> User-Agent: curl/7.61.0
> Authorization:Basic YnJ1Y2U6MTIzNA==
> Accept:application/json
>
< HTTP/1.1 400 Bad Request
* no chunk, no close, no size. Assume close to signal end
<
* Closing connection 0
Однако, когда я подставляю значение в кодировке base64 напрямую, оно работает:
curl -v http://localhost:3000/api/users \
-H "Authorization:Basic YnJ1Y2U6MTIzNA==" \
-H "Accept:application/json"
* Trying ::1...
* TCP_NODELAY set
* Connected to localhost (::1) port 3000 (#0)
> GET /api/users HTTP/1.1
> Host: localhost:3000
> User-Agent: curl/7.61.0
> Authorization:Basic YnJ1Y2U6MTIzNA==
> Accept:application/json
>
< HTTP/1.1 200 OK
... [data returned, etc.].
Что странно для меня, так это то, что начальный вывод команды CURL (из-за многословного флага -v) одинаков для этих двух подходов, так почему же тогда первый подход терпит неудачу?