Como posso enviar um cabeçalho de autenticação com um token via axios.js? Tentei algumas coisas sem sucesso, por exemplo:
const header = `Authorization: Bearer ${token}`;
return axios.get(URLConstants.USER_URL, { headers: { header } });
Me dá este erro:
XMLHttpRequest cannot load http://localhost:8000/accounts/user/. Request header field header is not allowed by Access-Control-Allow-Headers in preflight response.
Consegui fazer funcionar definindo o padrão global, mas acho que essa não é a melhor ideia para uma única solicitação:
axios.defaults.headers.common['Authorization'] = `Bearer ${token}`;
Atualização:
A resposta de Cole me ajudou a encontrar o problema. Estou usando o middleware django-cors-headers que já gerencia o cabeçalho de autorização por padrão.
Mas eu fui capaz de entender a mensagem de erro e corrigi um erro no meu código de solicitação do axios, que deve ser parecido com este
return axios.get(URLConstants.USER_URL, { headers: { Authorization: `Bearer ${data.token}` } });
fonte
return axios.get(URLConstants.USER_URL, { headers: { Authorization: `Bearer ${data.token}` } });
Experimente isto:
fonte
Isso tem funcionado para mim:
fonte
Em vez de adicioná-lo a todas as solicitações, você pode apenas adicioná-lo como uma configuração padrão.
fonte
Você está quase correto, apenas ajuste seu código desta forma
observe onde coloco os crases, adicionei '' após o Bearer, você pode omitir se tiver certeza de manipular no lado do servidor
fonte
-
), entre o esquema de autenticação e o token. Nunca vi nenhum tipo de servidor exigir um traço como você mostrou, e a maioria, senão todos, enviaria de volta um erro se um deles fosse fornecido.Em vez de chamar a função axios.get, use:
fonte
esta mudança corrigiu o meu problema, experimente!
fonte
Instale o
cors
middleware. Estávamos tentando resolvê-lo com nosso próprio código, mas todas as tentativas falharam terrivelmente.Isso fez funcionar:
Link original
fonte
Você pode tentar isso.
fonte