У меня есть сервер, который использует аутентификацию Hawk (Django Rest Framework).
При выполнении аутентифицированных запросов у меня нет проблем с пакетом python requests
.
Однако при использованиипакет javascript axios
, заголовок Authorization
не достигает моего промежуточного ПО аутентификации.
Запрос Python с requests
, работает
->
GET /logout/ HTTP/1.1
Host: localhost:8000
Accept-Encoding: identity
Authorization: Hawk mac="sPJZet9eQKyBZSBpbGVQefPzsfBIXNFJDWAPF93n6fA=", hash="q/t+NNAkQZNlq/aAD6PlexImwQTxwgT2MahfTa9XRLA=", id="z1dkOdDr", ts="1528778355", nonce="gBZQRS"
<-
HTTP/1.1 200 OK
Date: Tue, 12 Jun 2018 04:39:15 GMT
Server: WSGIServer/0.2 CPython/3.6.4
Content-Type: application/json
Vary: Accept
Allow: GET, HEAD, OPTIONS
Server-Authorization: Hawk mac="jBlHlyWCkirfBafbfw+N4iadwuQEsX99pATGXqxjOCY=", hash="2BRBGFjKOpKo9GffbS9rYZddAd5xoq/WdfD0Fm9wDhk="
X-Frame-Options: SAMEORIGIN
Content-Length: 41
{"detail": "user secret has been changed"}
Запрос JS с axios
завершается неудачно, поскольку промежуточное ПО аутентификации не видит Authorization
в заголовках:
->
GET /logout/ HTTP/1.1
Accept: application/json, text/plain, */*
Authorization: Hawk id="7RdDRgkJ", ts="1528778122", nonce="TQWhoS", mac="nrX3bJbVF1wQt/tWrmUf/y/oEmAE6oFPyM5uP5sqzLg="
User-Agent: axios/0.18.0
Host: localhost:8000
Connection: close
<-
HTTP/1.1 401 Unauthorized
Date: Tue, 12 Jun 2018 04:35:22 GMT
Server: WSGIServer/0.2 CPython/3.6.4
Content-Type: application/json
WWW-Authenticate: Hawk
Vary: Accept
Allow: GET, HEAD, OPTIONS
X-Frame-Options: SAMEORIGIN
Content-Length: 39
{"detail": "Hawk authentication failed"}
Различия кажутся номинальными.Что может быть причиной проблемы?Заголовок Authorization
определенно удаляется до того, как запрос достигает промежуточного программного обеспечения для аутентификации, но я не могу понять, где.