Reactjs 如何在获取请求中获取响应的头?

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" ,{

我试图在获取请求之后获取响应的标题,并为我的redux状态分配一些值。不过,我只能访问标题的承诺。如果能帮我找出原因,我将不胜感激

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的网络响应中看到了这一点)这可能是因为您没有设置
访问控制公开标题
,因为默认情况下只有一些标题是公开的:是的,您是正确的。我的问题是暴露标题。非常感谢你的帮助!