响应头存在于浏览器中但未被Angular $ http response.headers()解析

klo*_*ode 12 javascript http httpresponse http-headers angularjs

在我们的Angular应用程序中,我们需要解析一些$ http的响应头.

例如,我们需要解析一些带X前缀的响应头X-Total-Results: 35.

打开Network浏览器开发工具的选项卡并检查相对于$ http请求的资源,我验证了响应头X-Total-Results: 35是否存在.

在浏览器中,X-Total-Results标头可用,但无法在Angular $ http中解析.

有没有办法在$ http中访问'raw'响应并为头文件编写自定义解析器?

$http.({method: 'GET', url: apiUrl,)
    .then( function(response){
        console.log('headers: ', response.headers());
        console.log('results header: ', response.headers('X-Total-Results'));
        // ...
    })
Run Code Online (Sandbox Code Playgroud)

控制台输出

headers: Object {cache-control: "no-cache="set-cookie"", content-type: "application/json;charset=utf-8"}

results header: null
Run Code Online (Sandbox Code Playgroud)

yve*_*era 23

您无法在JavaScript上读取标题但您可以在开发人员控制台上查看它的原因是因为对于CORS请求,您需要允许客户端读取标头.

您的服务器需要发送此标头:

Access-Control-Expose-Headers:X-Total-Results
Run Code Online (Sandbox Code Playgroud)

要在评论中回答您的问题,Access-Control-Allow-Headers根据W3规范,不允许使用通配符