如何以及在何处为koa-cors设置Access-Control-Expose-Headers

时间:2018-04-19 16:14:08

标签: header cors fetch koa

我试图通过提取请求从我的服务器发送一些标头到我的前端。

在控制器功能中,我明确地发送了一些这样的标题:



exports.getItems = async (ctx) => {
  ctx.set('Search-type', 'category');
};




在postman中,当我向我的服务器发出get请求时,我得到了这些标题:



Connection →keep-alive
Content-Length →6442
Content-Type →application/json; charset=utf-8
Date →Thu, 19 Apr 2018 16:10:54 GMT
Search-type →category




但是,当我尝试从前端访问获取请求中的标头时,我只能记录Content-Type。如何从我的提取中获取搜索类型?

经过一些谷歌搜索后,我发现这issue on github与我的非常相似。这导致我另一个github issue page,建议我需要公开一些明确需要的标题'。

koa/cors文档中,有一个选项allowHeaders Access-Control-Allow-Headers我想知道的是,如何公开标题以便我可以将它们放在我的前端?

1 个答案:

答案 0 :(得分:0)

在对GET的响应中,除了添加Access-Control-Allow-Origin响应标头之外,还需要包含Access-Control-Expose-Headers: <comma-separated-list-of-headers>响应标头。

如果服务器未返回该标头,即使服务器将标头发送到浏览器,浏览器也会阻止JavaScript访问任何非标准标头。因此,您可以看到Content-Type(因为它是'标准'响应标头),但不是Search-type

基本上,您需要确保服务器以此

响应

Access-Control-Expose-Headers: Search-type

(除了任何其他CORS响应标头,当然还有Access-Control-Allow-Origin)。