NodeJS 承载令牌身份验证是否与Access-Control-Allow-Credentials配合使用:false?[重复]

p4tfgftt  于 2023-05-17  发布在  Node.js
关注(0)|答案(1)|浏览(234)

此问题已在此处有答案

What exactly does the Access-Control-Allow-Credentials header do?(1个答案)
7天前关闭
截至6天前,社区正在审查是否重新讨论这个问题。
我的客户端通过以下头发送经过身份验证的请求:

Authorization: Bearer some-token

在响应中包含以下标题会使事情无法工作吗?

Access-Control-Allow-Credentials: false
z31licg0

z31licg01#

首先,要注意false对于Access-Control-Allow-Credentials头来说不是一个值得注意的值。根据Fetch标准,唯一值得注意的值是true(小写)。在响应中包含值不是true的报头在功能上等同于从响应中省略该报头。那么问题就变成了:
Access-Control-Allow-Credentials: true是否需要响应CORS请求才能工作?
Access-Control-Allow-Credentials: true仅在响应跨域 * 凭证 * 请求时才需要,例如从不同Web源发起的请求

在此上下文中,术语 credentials 指的是浏览器管理的凭证或 ambient authority,即浏览器 * 自动 * 附加到请求的内容(适用时):cookie、客户端TLS证书、常规Basic身份验证等。
如果您的 client 包含Authentication标头(无论使用何种身份验证方案:BasicBearer等)对另外的非凭证化请求,则在相应响应中存在Access-Control-Allow-Credentials: true是无关的。This instance of Jake Archibald's CORS playground可能足以说服你。
然而,要使事情正常工作,一个必要的条件是对预检请求的响应包括一个Access-Control-Allow-Headers头,其中可能列出了其他请求头名称中的Authorization(不区分大小写),例如:

Access-Control-Allow-Headers: Authorization

相关问题