当前位置: 首页 > news >正文

HTTP 头部 和 Headers 对象

声明:本文主要内容来自通义灵码。

HTTP 头部

每个HTTP请求和响应都会携带一些头部字段。

XHR 请求会发送的头部字段

* 1. Accept: 浏览器能够处理的内容类型

* 2. Accept-Charset: 浏览器能够显示的字符集

* 3. Accept-Encoding: 浏览器能够处理的压缩编码 * 4. Accept-Language: 浏览器当前设置的语言

* 5. Connection: 浏览器与服务器的连接类型

* 6. Content-Type: 请求体的 MIME 类型(对于 POST 请求)

* 7. Cookie: 当前域下的 cookie 信息(如果有的话) * 8. Host: 请求的主机名和端口号

* 9. Referer: 发送请求的页面 URI

* 10. User-Agent: 浏览器的用户代理字符串

* 11. Authorization: 用于 HTTP 认证的授权头部

* 12. If-Modified-Since: 只有在指定时间之后资源被修改过才获取资源

* 13. If-None-Match: 用于条件请求的实体标签

* 14. Origin: 发起请求的源(协议、域名、端口)

浏览器自动添加的头部字段

注意:某些头部字段是浏览器自动添加的,不能通过 setRequestHeader() 方法修改

如:

Accept-Charset,

Accept-Encoding,

Access-Control-Request-Headers,

Access-Control-Request-Method,

Connection,

Content-Length,

Cookie,

Date,

DNT,

Expect,

Host,

Keep-Alive,

Origin,

Referer,

TE,

Trailer,

Transfer-Encoding,

Upgrade,

User-Agent,

Via

自定义头部字段

如果需要发送额外的请求头部,可以使用setRequestHeaders()方法。

setRequestHeaders()接收两个参数:头部字段的名称和值。

为保证请求头部被发送,必须在XHR的open()之后,send()之前调用setRequestHeaders()方法。

Headers 对象

Headers 接口允许您对 HTTP 请求和响应头进行操作。

通过 Headers 构造函数可以创建一个新的 Headers 对象。

Headers 对象提供了许多方法来添加、删除和修改 HTTP 头部信息

Headers 对象的作用域和可用性

1. Headers 是全局对象,可以在任何地方创建和使用,不仅仅局限于 Fetch API

2. 它是 Fetch API 规范的一部分,但其实现独立于具体的网络请求方法

3. 可以在任何需要处理 HTTP 头部的场景中使用 Headers 对象

4. 浏览器环境中,Headers 构造函数是全局可用的(只要浏览器支持 Fetch API)

 Headers 对象的用途不仅限于 fetch() 请求

1. 可以用于处理 XMLHttpRequest 的请求头

2. 可以用于解析和操作响应头

3. 可以作为通用的 HTTP 头部处理工具

4. 可以用于测试和模拟 HTTP 头部操作

创建一个新的 Headers 对象

var headers = new Headers();

// 添加头部信息

headers.append('Content-Type', 'application/json');

headers.append('Authorization', 'Bearer token123');

headers.append('X-Custom-Header', 'CustomValue');

// 也可以在创建时初始化头部

var initHeaders = new Headers({ 'Content-Type': 'text/plain', 'X-Initial-Header': 'InitialValue' });

Headers 对象与普通对象的区别

1. Headers 对象提供了专门的方法来操作头部 

2. Headers 对象会自动处理同名多值的情况 

3. Headers 对象会对头部名称进行标准化处理

4. Headers 对象是可迭代的

Headers 对象的方法

1. append(name, value) - 添加新的头部

headers.append('X-Additional-Header', 'AdditionalValue');

2. delete(name) - 删除指定头部

headers.delete('X-Custom-Header');

3. get(name) - 获取指定头部的值

console.log('Content-Type:', headers.get('Content-Type')); // application/json

4. has(name) - 检查是否存在指定头部

console.log('Has Authorization:', headers.has('Authorization')); // true

5. set(name, value) - 设置头部值(会覆盖已有的值)

headers.set('Content-Type', 'application/xml'); console.log('New Content-Type:', headers.get('Content-Type')); // application/xml

6. forEach(callback) - 遍历所有头部

headers.forEach(function(value, name) { console.log(name + ': ' + value); });

7. entries() - 返回包含所有键值对的迭代器

for (var entry of headers.entries()) { console.log(entry[0] + ': ' + entry[1]); }

8. keys() - 返回包含所有键的迭代器

for (var key of headers.keys()) { console.log('Header name:', key); }

9. values() - 返回包含所有值的迭代器

for (var value of headers.values()) { console.log('Header value:', value); }

在 fetch 请求中使用 Headers 对象

// 在 fetch 请求中使用 Headers 对象
fetch("https://jsonplaceholder.typicode.com/posts", {method: "POST",headers: new Headers({'Content-Type': 'application/json','X-Requested-With': 'XMLHttpRequest'}),body: JSON.stringify({title: '使用 Headers 对象',body: '这是使用 new Headers() 创建的头部信息',userId: 1})
})
.then(function(response) {console.log('Response headers:');// 遍历响应头部for (var pair of response.headers.entries()) {console.log(pair[0] + ': ' + pair[1]);}return response.json();
})
.then(function(data) {console.log('使用 Headers 的请求结果:', data);
})
.catch(function(error) {console.error('请求错误:', error);
});// 普通对象方式(会被自动转换为 Headers 对象)
fetch("https://jsonplaceholder.typicode.com/posts/1", {headers: {'X-API-Key': 'abcdef12345','Accept': 'application/json'}
})
.then(function(response) {return response.json();
})
.then(function(data) {console.log('使用普通对象设置头部:', data);
});

http://www.dtcms.com/a/462369.html

相关文章:

  • 张掖作风建设年网站湖南seo网站多少钱
  • gps的时间精度
  • 如何在工商局网站做身份确认广东短视频推广效果好
  • 第29节:第二阶段总结 - 打造一个3D游戏原型
  • 设计的有趣的网站推荐怎样申请免费网站域名
  • --- 前后端的文件交互 ---
  • 打工人日报#20251009
  • 高并发秒杀系统设计:从理论到实践
  • Java 定时任务
  • 如何创建网站的二维码如何编辑 wordpress 主题
  • C++内存模型深度剖析从并发编程到原子操作的内存序语义
  • seo优化方法有哪些
  • 土动三轴试验机技术指标
  • 漳州正规网站建设公司wordpress google插件
  • 营销网站首页设计wordpress 博客主题
  • 鸿蒙路上的那些事:从初学者到资源创作者
  • 河北网站开发联系电话4a网站建设公司
  • 在 VS Code 中让整个工作区只读
  • 优秀网站菜单wordpress注册收不到邮件
  • 合肥网站建设pqiw目录网站做外链
  • 泉州自主建站模板网站设计费用价目表
  • 让水分子“导航”,突破蛋白–糖类分子对接难题
  • 在dify工作流中如何定义filename自动生成
  • asp 网站后台免费的企业网页制作网站
  • ILSpy下载和安装教程(附安装包,图文并茂)
  • 微信小程序-9-上滑加载更多和下拉刷新及小程序更新分享和转发
  • 【AES加密专题】1.AES的原理详解和加密过程
  • hello_servlet
  • 易拉罐和瓶子分类数据集 6059张图片,支持yolo,coco json,paschal voc xml格式,识别率可达92.5%,文末提供下载地址
  • 1 玩转Linux命令行:基础文件操作实战教程