【发布时间】:2019-09-08 22:54:33
【问题描述】:
我有一个使用 ES6 fetch API 的反应应用程序来使用 CORS 调用一个休息端点。 fetch 调用工作得很好,但我无法获取从服务器发送的响应标头。我可以在 Chromes devtools 中看到响应标头,因此我知道它们正在被发回给我;但是在代码中访问它们似乎对我不起作用。这是代码(它的基本获取承诺链):
fetch(url)
.then(response => {
for (let header of response.headers) { < -- - headers is empty
console.log(header);
}
return response;
});
但是 response.headers 是空的。但我可以清楚地看到 Chrome 中的标题。 fetch 调用阻止我查看它们是否有原因?我需要什么才能访问这些标头?服务器存储了一些我们喜欢使用的特定于应用程序的标头。
更新:我可以通过让服务器将此添加到 OPTION 请求的响应中来解决此问题:
response.setHeader("Access-Control-Expose-Headers", "X-Custom-Header");
现在对于 fetch 命令的响应,我可以执行以下操作:
const customHeader = response.headers.get('X-Custom-Header');
感谢卡里姆对此提供的帮助!
【问题讨论】:
标签: javascript ecmascript-6 cors fetch