Reactjs 如何在获取请求中获取响应的头?
我试图在获取请求之后获取响应的标题,并为我的redux状态分配一些值。不过,我只能访问标题的承诺。如果能帮我找出原因,我将不胜感激Reactjs 如何在获取请求中获取响应的头?,reactjs,redux,http-headers,fetch,response,Reactjs,Redux,Http Headers,Fetch,Response,我试图在获取请求之后获取响应的标题,并为我的redux状态分配一些值。不过,我只能访问标题的承诺。如果能帮我找出原因,我将不胜感激 export function sign_in(email, password){ return (dispatch) => { dispatch({ type: 'LOGGING_USER_IN' }); return fetch("http://localhost:3000/api/v1/auth/sign_in" ,{
export function sign_in(email, password){
return (dispatch) => {
dispatch({ type: 'LOGGING_USER_IN' });
return fetch("http://localhost:3000/api/v1/auth/sign_in" ,{
method: "POST",
cache: "no-cache",
credentials: "same-origin",
headers: {
"Content-Type": "application/json; charset=utf-8"
},
body: JSON.stringify({
email: email,
password: password
})
})
.then(response => {
dispatch({type:'LOGGING_USER_IN_SUCCESS', payload: response.headers})
})
.catch(error =>{
dispatch({type:'LOGGING_USER_IN_FAILURE', payload: error, error:true})
})
}
};
我的减速机:
export default function authReducer(state = {
isLoaded: false,
}, action) {
switch (action.type) {
case 'LOGGING_USER_IN':
return {
...state,
}
case 'LOGGING_USER_IN_SUCCESS':
// console.log(action.payload.get("access-token"))
return {
// ...state,
isLoaded: true,
user: action.payload}
case 'LOGGING_USER_IN_FAILURE':
return{
...state,
isLoaded: true,
errorMessage: action.payload.message}
default:
return state;
}
}
response.headers
是表示HTTP响应头的headers{}
对象
您需要通过调用get(name)
来查找要分派的头,或者可以使用forEach
来获取所有头,如下所示:
.then(response => {
const payload = {};
response.headers.forEach((value, name) => payload[name] = value);
dispatch({type:'LOGGING_USER_IN_SUCCESS', payload })
})
旁注:
仅显示以下标题:
- 缓存控制
- 内容语言
- 内容类型
- 到期
- 最后修改
- 布拉格马
访问控制暴露头
头
看起来正确,有错误吗?我的状态总是以空结束。当我尝试console.log response.headers时,我也得到了一个空值。这就是为什么我相信我只是得到了承诺和真正的头球。除此之外,没有错误。根据我的浏览器,我的标题很好。非常感谢,这很有帮助。我实际上是想得到我的访问令牌。因此,我尝试了response.headers.get(“访问令牌”),但得到的是null。在使用代码时,我确实无法在我的头{}对象中看到访问令牌。有什么原因吗?(我在broswer的网络响应中看到了这一点)这可能是因为您没有设置
访问控制公开标题
,因为默认情况下只有一些标题是公开的:是的,您是正确的。我的问题是暴露标题。非常感谢你的帮助!