为什么React的FETCH API没有返回响应头?

时间:2017-07-02 01:56:25

标签: javascript reactjs cors fetch fetch-api

我正在构建一个SignUp表单,并对POST表单进行以下API调用:

const request = new Request('http://localhost:4300/auth/', {
 method: 'POST',
 headers: new Headers({
   'Accept'       : 'application/json',
   'Content-Type' : 'application/json',
 }),
 body: JSON.stringify({ user: data })
});

fetch(request).then(response => {
    console.log(response);
    const auth = response.headers.get('Authorization');
    console.log(auth)
});

问题是response.headers.get('Authorization')正在返回null。即使我查看Chrome的网络XHR请求,我也会看到API服务器发送的响应标头。

为什么React没有通过上述请求向我提供response.headers

由于

1 个答案:

答案 0 :(得分:3)

来自http://localhost:4300/auth/的回复的Access-Control-Expose-Headers response heade r值必须包含" Authorization"如果您希望允许您的请求前端JavaScript代码访问Authorization响应标头值。

如果响应中不包含Access-Control-Expose-Headers标头的值,则浏览器允许您从Web应用中的客户端JavaScript访问的唯一响应标头为Cache-ControlContent-LanguageContent-TypeExpiresLast-ModifiedPragma

请参阅https://fetch.spec.whatwg.org/#cors-safelisted-response-header-name了解相关规范。