У меня есть Vue.js PWA
с Django Rest Framework
бэкэндом, который корректно работает локально на моем ноутбуке (с помощью браузера). Когда я развертываю его в рабочей среде, он продолжает работать правильно, когда я вхожу в систему с помощью браузера, однако не удается войти в систему, когда он открыт как PWA (ie: на телефоне или PWA, сохраненном в браузере).
Вот мой код входа в систему:
axios
.post("/api/get-token/", user)
.then(res => {
localStorage.setItem('user-token', res.data.token);
axios.defaults.headers.common['Authorization'] = res.data.token;
commit(AUTH_SUCCESS, res.data);
resolve(res);
})
.catch(err => {
commit(AUTH_ERROR, err);
reject(err);
});
Как уже упоминалось, все работает локально и в рабочем режиме при входе через браузер. Проблема возникает при попытке войти в систему с помощью PWA.
При попытке войти в систему PWA я получаю следующее:
POST https://www.example.com/api/get-token/ 401 (Unauthorized)
Создание консольного журнала об ошибке, полученной от Сервер, который я получаю:
{
detail: "Invalid token header. No credentials provided."
__proto__: Object
status: 401
statusText: "Unauthorized"
headers: {allow: "POST, OPTIONS", connection: "keep-alive", content-length: "59", content-type: "application/json", date: "Thu, 06 Feb 2020 15:00:11 GMT", …}
config:
url: "/api/get-token/"
method: "post"
data: "{"username":"test@example.com","password":"password"}"
headers:
Accept: "application/json, text/plain, */*"
Authorization: "Token "
Content-Type: "application/json;charset=utf-8"
__proto__: Object
transformRequest: [ƒ]
transformResponse: [ƒ]
timeout: 0
adapter: ƒ (t)
xsrfCookieName: "csrftoken"
xsrfHeaderName: "X-CSRFToken"
maxContentLength: -1
validateStatus: ƒ (t)
}
На производстве работают следующие функции:
- Войдите на сайт с помощью браузера на моем ноутбуке или на телефоне.
- Затем откройте PWA. Это работает правильно, и я могу продолжать использовать PWA.
Единственная проблема возникает при попытке войти в систему с помощью PWA.