You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS HTTP请求中send credentials的含义、影响范围及相关疑问

Fetch API中credentials参数的影响范围详解

我来明确拆解credentials参数的作用细节,以及它到底会影响哪些内容:

一、credentials的三个可选值基础行为

credentials核心控制的是浏览器自动管理的用户凭据在请求中的携带规则,三个值的逻辑如下:

  • omit:请求中完全不包含任何浏览器自动管理的凭据
  • same-origin:仅当请求的目标地址与当前页面同源时,才携带凭据
  • include:无论同源还是跨域请求,都携带凭据(跨域场景下必须配合服务器端返回Access-Control-Allow-Credentials: true响应头,否则浏览器会拒绝接收响应)

二、受影响的凭据类型

根据Fetch规范的定义,credentials会作用于以下三类浏览器自动管理的凭据:

  • Cookie:所有与请求目标域匹配的Cookie(包括会话Cookie和持久Cookie),只要浏览器存储了对应域的Cookie,就会按规则决定是否携带
  • HTTP Basic/Digest认证信息:浏览器保存的用于HTTP基础/摘要认证的用户名密码,这类信息会通过Authorization头自动发送,受credentials控制
  • TLS客户端证书:如果请求的目标服务器要求客户端证书认证,credentials设置会控制浏览器是否使用已安装的对应证书

三、关于Authorization头的疑问

分两种情况:

  • 浏览器自动生成的Authorization头(比如Basic Auth的认证信息):受credentials设置影响,会根据规则决定是否发送
  • 开发者手动添加的Authorization头(比如JWT的Bearer Token):不受credentials控制,因为这属于自定义请求头,不属于浏览器自动管理的凭据范畴

四、关于Cookie的疑问

credentials会影响所有符合目标域规则的Cookie,不存在“仅携带特定凭据Cookie”的区分。只要浏览器中存储了请求目标域的Cookie,就会按照credentials的设置决定是否在请求中携带。

五、官方规范的明确说明

Fetch规范中直接定义了credentials的作用范围:

HTTP cookies, HTTP authentication, and client-side SSL certificates.

这段定义清晰覆盖了所有受影响的凭据类型,是最权威的参考依据。

内容的提问来源于stack exchange,提问作者Matt Ruwe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 08:05:22