gpt4 book ai didi

javascript - 为什么不是所有的请求头都在 AngularJS 请求拦截器的配置参数中可用?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:00:52 24 4
gpt4 key购买 nike

我有一个 AngularJS $http 拦截器来拦截请求和响应。我需要访问拦截器请求方法中的几个请求 header 。

但是当我在控制台记录接收到的配置对象作为请求方法的参数时,我只能在 config.headers 下看到单个 header ;那就是

接受:“application/json, text/plain, */*”

并且开发人员的工具正在显示所有请求 header ,如

Accept:application/json, text/plain, */*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:mr,en-US;q=0.8,en;q=0.6
Connection:keep-alive
Host:localhost:8080
Origin:http://127.0.0.1:61917
Referer:http://127.0.0.1:61917/index.html

我知道$httpProvider.defaults.headers.common设置所有请求通用的headers,默认添加的header是

接受:application/json, text/plain, */*

但为什么我不能访问请求的其他请求 header ?

如何在 AngularJs 的请求拦截器方法中获取所有这些请求 header ?

最佳答案

我可以回答这个问题!即使您的浏览器在其向服务器的请求中发送了 Accept-Language header ,但只有服务器可以读取此 header 的值(疯了,对吧?)。访问此 header 值的唯一方法是在服务器上读取请求 header 的值,然后将其发送回客户端。

您可以在响应 header 或响应正文中发送回 Accept-Language 的值。

此外,在您的服务器上的某处,会有这样一行内容:

Access-Control-Expose-Headers: "Content-Type,Origin"

Accept-Language 添加到暴露的 header 列表中可能会有所帮助,因此它的内容如下:

Access-Control-Expose-Headers: "Content-Type,Origin,Accept-Language"

我正在使用 Accept-Language header 而不是 window.navigator.language 来确定用户的语言,因为它看起来像 window.navigator .language 经常给出不正确的值。

希望对您有所帮助!

关于javascript - 为什么不是所有的请求头都在 AngularJS 请求拦截器的配置参数中可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25987633/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com