如何在获取请求中获取响应的headers?
How to get the headers of a reponse in a fetch request?
我正在尝试获取 headers 获取请求后的响应,并为我的 redux 状态分配一些值。不过,我只能访问 headers 的承诺。如果能帮我找出原因,我将不胜感激。
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
是一个 Headers{}
object 表示 HTTP 响应 headers.
您需要通过调用 get(name)
查找要发送的 header,或者您可以像这样使用 forEach
获取所有 header :
.then(response => {
const payload = {};
response.headers.forEach((value, name) => payload[name] = value);
dispatch({type:'LOGGING_USER_IN_SUCCESS', payload })
})
旁注:
仅公开以下 headers:
- Cache-Control
- Content-Language
- Content-Type
- 过期
- Last-Modified
- 编译指示
因此,如果您想访问任何其他 header,则需要适当地设置 Access-Control-Expose-Headers
header。
我正在尝试获取 headers 获取请求后的响应,并为我的 redux 状态分配一些值。不过,我只能访问 headers 的承诺。如果能帮我找出原因,我将不胜感激。
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
是一个 Headers{}
object 表示 HTTP 响应 headers.
您需要通过调用 get(name)
查找要发送的 header,或者您可以像这样使用 forEach
获取所有 header :
.then(response => {
const payload = {};
response.headers.forEach((value, name) => payload[name] = value);
dispatch({type:'LOGGING_USER_IN_SUCCESS', payload })
})
旁注: 仅公开以下 headers:
- Cache-Control
- Content-Language
- Content-Type
- 过期
- Last-Modified
- 编译指示
因此,如果您想访问任何其他 header,则需要适当地设置 Access-Control-Expose-Headers
header。