Получение 403 ошибки при отправке POST-запроса Angular
Я получаю код состояния 403 при отправке post requset на сервер в django, сервер работает на locallhost, в postman post запрос работает, в чем причина возникновения ошибки
Мой файл auth.service.ts
getUser():Observable<any>{
const token = localStorage.getItem('jwt');
if(!token){
return throwError('Unauthorized')
}
const headers = new HttpHeaders({
'Content-Type':'application/json',
'Authorization': 'Bearer' + token
});
return this.http.get<any>(this.apiUrl_User, {headers})
}
Бэкенд часть в django
class UserView(APIView):
def get(self,request):
token = request.COOKIES.get('jwt')
if not token:
raise AuthenticationFailed('Unauthenticated')
try:
payload = jwt.decode(token, 'secret',algorithms=['HS256'])
except jwt.ExpiredSignatureError:
raise AuthenticationFailed('Unauthenticated')
user = User.objects.filter(id = payload['id']).first()
serializer = UserSerializer(user)
return Response(serializer.data)
вот как выглядит корсхедерс
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True
ALLOWED_HOSTS = [
"http://locallhost:4200",
"127.0.0.1"
]
CORS_ALLOW_METHODS = (
"DELETE",
"GET",
"OPTIONS",
"PATCH",
"POST",
"PUT",
)
CORS_ALLOW_HEADERS = (
"accept",
"authorization",
"content-type",
"user-agent",
"x-csrftoken",
"x-requested-with",
)
403 Forbidden Error означает, что у вас нет доступа к этому маршруту. Это означает, что он настроен из бэкенда, тогда как если вы отправляете токен, проверьте в месте над контроллером, какая роль разрешает пользователю доступ к нему, и проверьте, содержит ли токен входящего пользователя это разрешение или нет. Например, роль может повлиять на это. Обязательно проверьте свойства токена. Если это jwt-токен, обязательно зайдите на jwt.io и проверьте, какие разрешения установлены для этого токена.
Здесь
'Authorization': 'Bearer' + token
Обязательно добавьте пробел после Bearer
'Authorization': 'Bearer ' + token
Нравится, потому что это может вызвать проблемы с некоторыми бэкендами.