我正在尝试获取获取请求后的响应标头,并为我的redux状态分配一些值。我只能访问标头的Promise。我会为您找出原因提供帮助。
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;
}
}
答案 0 :(得分:0)
response.headers
是一个Headers{}
对象,代表HTTP响应标头。
您需要通过调用get(name)
来查找要分派的标头,或者可以使用forEach
来获得所有标头,如下所示:
.then(response => {
const payload = {};
response.headers.forEach((value, name) => payload[name] = value);
dispatch({type:'LOGGING_USER_IN_SUCCESS', payload })
})
附注: 仅公开以下标头:
因此,如果要访问任何其他标头,则需要适当设置Access-Control-Expose-Headers
标头。