未使用接收器在Axios示例中正确添加授权标头

2ledvvac  于 2023-10-18  发布在  iOS
关注(0)|答案(1)|浏览(165)

我正在尝试使用授权(使用JWT令牌)进行Get API调用。我创建了一个单独的Axios示例,并尝试使用Axios拦截器附加授权令牌。我在尝试使用Postman和相同的令牌时获得了状态200,但从我进行API调用时获得了状态403(禁止)。
我的Axios实现是:

  1. let Authinstance = axios.create({
  2. baseURL: SERVER_URL + '/api',
  3. headers:{
  4. 'Access-Control-Allow-Origin': '*',
  5. 'Content-Type':'application/json; charset=utf-8'
  6. }
  7. })
  8. Authinstance.interceptors.request.use( config => {
  9. const token = Auth().getToken();
  10. config.headers['Authorization'] = `Bearer ${token}`;
  11. return config;
  12. })
  13. export const getPayees = async() => {
  14. const username = Auth().getUser();
  15. const res = await Authinstance.get(`/netbanking/beneficiary/${username}`)
  16. return res.data
  17. }

函数Auth().getToken()只是从sessionStorage获取并返回令牌。正如你在给定的图像中看到的,我从服务器获得了403状态。enter image description here
我的直觉是我在实现Axios时做错了什么,因为我不熟悉Axios的代码流。请帮帮我

hts6caw3

hts6caw31#

屏幕上显示的选项请求,你可以尝试把屏幕上的第二个请求.但是你可以试着这样做:

  1. const authHeader = () => {
  2. Axios.interceptors.request.use(
  3. config => {
  4. const token = Auth().getToken();
  5. config.headers['Authorization'] = `Bearer ${token}`;
  6. config.headers["Access-Control-Allow-Origin"] = "*";
  7. config.headers["Content-Type"] = "application/json; charset=utf-8";
  8. return config;
  9. },
  10. err => {
  11. return Promise.reject(err);
  12. }
  13. );
  14. }

您的实现将是:

  1. // ----- authHeader ------
  2. let Authinstance = axios.create({
  3. baseURL: SERVER_URL + '/api',
  4. headers: authHeader(),
  5. })
  6. export const getPayees = async() => {
  7. const username = Auth().getUser();
  8. const res = await Authinstance.get(`/netbanking/beneficiary/${username}`)
  9. return res.data
  10. }

告诉我它是否有效。

展开查看全部

相关问题