Как получить заголовки ответа в запросе на выборку? - PullRequest
0 голосов
/ 10 октября 2019

Я пытаюсь получить заголовки ответа после запроса на выборку и присвоить некоторые значения моему состоянию избыточности. Я могу только получить доступ к обещанию заголовков. Я был бы признателен за помощь в выяснении, почему.

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;
}
}

1 Ответ

0 голосов
/ 10 октября 2019

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 })
})

демо

Примечание: доступны только следующие заголовки:

  • Кэш-Control
  • Content-Language
  • Content-Type
  • Срок действия
  • Последнее изменение
  • Pragma

Так что, если вы хотите получить доступ к любым другим заголовкам, вам нужно установить соответствующий заголовок Access-Control-Expose-Headers.

source

...