我试图通过提取请求从我的服务器发送一些标头到我的前端。
在控制器功能中,我明确地发送了一些这样的标题:
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
我想知道的是,如何公开标题以便我可以将它们放在我的前端?
答案 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
)。