React - 无法使用 axios 设置 headers
React - can't set headers with axios
我目前正在做快递 --> 反应 api。我无法使用 jwt 令牌设置 header,我想我已经尝试了我能找到的任何方法。可能与 CORS 设置有关吗?
Redux 动作
return (dispatch) => {
return instance.post("/login", userData).then((res) => {
const token = res.data.accessToken;
localStorage.setItem("token", token);
instance.interceptors.request.use(
(config) => {
const token = localStorage.getItem("token");
const auth = token ? `Bearer ${token}` : "";
config.headers.common["Authorization"] = auth;
return config;
},
(error) => Promise.reject(error)
);
// setAuthorizationToken(token);
});
};
};
令牌正确登陆本地存储。
全局 axios 设置
var instance = axios.create({
baseURL: "http://localhost:4000",
withCredentials: true,
});
服务器端的Cors设置。
app.use(
cors({
credentials: true,
allowedHeaders: "Content-Type, Authorization",
exposedHeaders: "Authorization",
origin:
process.env.NODE_ENV === "development"
? "http://localhost:3000"
: (process.env.FRONTEND_HOST as string),
})
);
有什么想法吗?
如果是CORS问题,可以在浏览器控制台查看。
试试这个。在您的全局 axios 设置中
const instance = axios.create({
baseURL: "http://localhost:4000",
headers: {
Authorization: `Bearer ` + localStorage.getItem("token"),
},
responseType: "json",
});
instance.interceptors.request.use(
(config) => {
const token = localStorage.getItem("token");
if (token) {
config.headers.Authorization = `Bearer ${token}`;
}
return config;
},
(error) => {
return Promise.reject(error);
}
);
export default instance;
Redux 动作
return (dispatch) => {
return instance.post("/login", userData).then((res) => {
const token = res.data.accessToken;
localStorage.setItem("token", token);
// dispatch action here
});
};
};
我目前正在做快递 --> 反应 api。我无法使用 jwt 令牌设置 header,我想我已经尝试了我能找到的任何方法。可能与 CORS 设置有关吗?
Redux 动作
return (dispatch) => {
return instance.post("/login", userData).then((res) => {
const token = res.data.accessToken;
localStorage.setItem("token", token);
instance.interceptors.request.use(
(config) => {
const token = localStorage.getItem("token");
const auth = token ? `Bearer ${token}` : "";
config.headers.common["Authorization"] = auth;
return config;
},
(error) => Promise.reject(error)
);
// setAuthorizationToken(token);
});
};
};
令牌正确登陆本地存储。
全局 axios 设置
var instance = axios.create({
baseURL: "http://localhost:4000",
withCredentials: true,
});
服务器端的Cors设置。
app.use(
cors({
credentials: true,
allowedHeaders: "Content-Type, Authorization",
exposedHeaders: "Authorization",
origin:
process.env.NODE_ENV === "development"
? "http://localhost:3000"
: (process.env.FRONTEND_HOST as string),
})
);
有什么想法吗?
如果是CORS问题,可以在浏览器控制台查看。 试试这个。在您的全局 axios 设置中
const instance = axios.create({
baseURL: "http://localhost:4000",
headers: {
Authorization: `Bearer ` + localStorage.getItem("token"),
},
responseType: "json",
});
instance.interceptors.request.use(
(config) => {
const token = localStorage.getItem("token");
if (token) {
config.headers.Authorization = `Bearer ${token}`;
}
return config;
},
(error) => {
return Promise.reject(error);
}
);
export default instance;
Redux 动作
return (dispatch) => {
return instance.post("/login", userData).then((res) => {
const token = res.data.accessToken;
localStorage.setItem("token", token);
// dispatch action here
});
};
};