这里是修真院前端小课堂,每篇分享文从

【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】

八个方面深度解析前端知识/技能,本篇分享的是:

【network中的请求信息,headers中的每一项分别是什么意义?】

【JS-5】network中的请求信息,headers中的每一项分别是什么意义?

大家好,我是IT修真院深圳分院第12期的学员韩鹏,一枚正直纯洁善良的前端程序员,今天给大家分享一下,修真院官网JS任务5,深度思考中的知识点——network中的请求信息,headers中的每一项分别是什么意义?

1.背景介绍

作为一个Web开发人员,日常中与我们开发相关的,就是Chrome的开发者工具。Network标签页对于分析网站请求的网络情况、查看某一请求的请求头和响应头还有响应内容很有用,特别是在查看Ajax类请求的时候,非常有帮助。今天就是要简要说说Chrome的开发者工具中Network中header部分。

2.知识剖析

Network面板-请求表

Name:资源名称,点击名称可以查看资源的详情情况,包括Headers、Preview、Response、Cookies、Timing。

Status:HTTP状态码。

Type:请求的资源MIME类型。

Initiator:标记请求是由哪个对象或进程发起的(请求源)。

Parser: 请求由Chrome的HTML解析器时发起的。

Redirect:请求是由HTTP页面重定向发起的。

Script:请求是由Script脚本发起的。

Other:请求是由其他进程发起的,比如用户点击一个链接跳转到另一个页面或者在地址栏输入URL地址。

Size:从服务器下载的文件和请求的资源大小。如果是从缓存中取得的资源则该列会显示(from cache)

Time:请求或下载的时间,从发起Request到获取到Response所用的总时间。

Timeline:显示所有网络请求的可视化瀑布流(时间状态轴),点击时间轴,可以查看该请求的详细信息,点击列头则可以根据指定的字段可以排序。

通过点击某个资源的Name可以查看该资源的详细信息,根据选择的资源类型显示的信息也不太一样,可能包括如下Tab信息:

Headers:该资源的HTTP头信息。

Preview:根据你所选择的资源类型(JSON、图片、文本)显示相应的预览。

Response:显示HTTP的Response信息。

Cookies:显示资源HTTP的Request和Response过程中的Cookies信息。

Timing:显示资源在整个请求生命周期过程中各部分花费的时间。

查看资源HTTP头信息

在Headers标签里面可以看到HTTP Request URL、HTTP Method、Status Code、Remote Address等基本信息和详细的Response Headers、Request Headers以及Query String Parameters或者Form Data等信息。

General部分:

Request URL:资源的请求url

Request Method:HTTP方法

Status Code:响应状态码

200(状态码) OK(原因短语)

301 - 资源(网页等)被永久转移到其它URL

404 - 请求的资源(网页等)不存在

500 - 内部服务器错误

Response Headers:

Content-Encoding:gzip ——压缩编码类型

Content-Type:text/html ——服务端发送的类型及采用的编码方式

Date:Tue, 14 Feb 2017 03:38:28 GMT ——客户端请求服务端的时间

Last-Modified:Fri, 10 Feb 2017 09:46:23 GMT ——服务端对该资源最后修改的时间,GMT是格林尼治标准时间

Server:nginx/1.2.4 ——服务端的Web服务端名

Transfer-Encoding:chunked ——分块传递数据到客户端

Request Headers:

Accept:text/html ——客户端能接收的资源类型

Accept-Encoding:gzip, deflate ——客户端能接收的压缩数据的类型

Accept-Language:en-US,en;q=0.8 ——客户端接收的语言类型

Cache-Control:no-cache ——服务端禁止客户端缓存页面数据

Connection:keep-alive ——维护客户端和服务端的连接关系

Cookie: ——客户端暂存服务端的信息

Host:www.jnshu.com ——连接的目标主机和端口号

Pragma:no-cache ——服务端禁止客户端缓存页面数据

Referer:http://www.jnshu.com/daily/12345 ——来于哪里

User-Agent: ——客户端版本号的名字

3.常见问题

使用post发送请求时如何设置content-type的值?

4.解决方案

常用的Content-Type值:

1. application/x-www-form-urlencoded 最常见的POST提交格式,使用这个编码格式post的数据会以键值对的方式提交

2. multipart/form-data 通常上传图片等文件会使用这种编码格式提交

3. application/json 提交JSON格式的数据

设置请求头的方法:

1、在http服务的在服务端发送请求时,也就是调用http()方法时,在config对象中设置请求头信息。事例如下:

            $http.post( url , data , {headers : {'My-Header' : 'value';}}).then(function( ){……});

这种方法的好处就是针对不同路径的请求,可以个性化配置请求头部,缺点就是,不同路径请求都需要单独配置。

2、第二种设置请求头信息的方式就是在$httpProvider.defaults.headers属性上直接配置。事例如下:

    angular.module('app', []).config(function($httpProvider) {$httpProvider.defaults.headers.common = { 'My-Header' : 'value' }})

$httpProvider.defaults.headers有不同的属性,如common、get、post、put等。因此可以在不同的http请求上面添加不同的头信息,common是指所有的请求方式。

这种方式添加请求头信息的优势就是可以给不同请求方式添加相同的请求头信息,缺点就是不能够为某些请求path添加个性化头信息。

5.代码实战

6.拓展思考

HTTP的缺点

通讯使用明文(不加密),内容可能会被监听;

不验证通讯方的身份,因此有可能遭遇伪装;

无法证明白报文的完整性,所以有可能已被篡改;

解决方法:使用HTTPS

HTTP + 加密 + 认证 + 完整性保护 = HTTPS

7.参考文献

参考一:HTTP请求头和响应头含义

参考二:content-type说明

参考三:Network面板

参考四:$http-设置http请求头

8.更多讨论

1、TIMELINE 时间轴中的不同颜色的线代表什么意思?

答:Timeline工具里面使用是4种颜色来表示不同类别的事件: 
            蓝色:加载;黄色:脚本;紫色:渲染;绿色:绘制;

2、所有请求都有Content-Type吗?

答:GET 请求不存在请求实体部分,键值对参数放置在 URL 尾部,浏览器把form数据转换成一个字串(name1=value1&name2=value2...),然后把这个字串追加到url后面,用?分割,加载这个新的url。因此请求头不需要设置 Content-Type 字段。

3、除了已讲的两种,还有什么方法设置Content-Type吗?

答:有的。

第三种设置请求头信息的地方是$httpProvider.interceptors。也就是为请求或相应注册一个拦截器。使用这这方式我们首先需要定义一个服务。

    myModule.factory('authInterceptor', function($rootScope,  $cookies){return {request: function(config){config.headers = config.headers || {};if($cookies.get('token')){config.headers.authorization = 'Bearer ' + $cookies.get('token');}return config;},responseError: function(response){// ...}};})

然后把上面定义的服务注册到$httpProvider.interceptors中。

    .config(function($httpProvider){$httpProvider.interceptors.push('authInterceptor');})

network中的请求信息,headers中的每一项分别是什么意义?相关推荐

  1. ojdbc6中的错误信息(中英) 【转】

    http://hi.baidu.com/kingtckingtc/blog/item/41cfbab78a5b0cfe30add134.html ojdbc6中的错误信息(中英) 2009年09月11 ...

  2. 此模块的调试信息中缺少源信息_SpringBoot中的潜在漏洞分析

    Spring Boot是由Pivotal团队提供的全新的开源框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置 ...

  3. 微信小程序wx.request中post请求时data中参数不能传到后台

    当使用POST方式请求时,后端无法获取data中的数据, 将: 'content-type': 'application/json' 修改为: 'content-type': 'application ...

  4. 此模块的调试信息中缺少源信息_22python中的模块

    点击蓝色"潭时录"关注我丫 加个"星标",每天和小潭一起快乐的学习 你好,我是在学python的小潭.通过昨天的文章21-python中类的赋值和深浅拷贝我们熟 ...

  5. mysql同姓查询_sql语句中在学生信息表中查询同姓的学生姓名

    展开全部 1.创建一个bai测试表,如下图 createtabletest_duname(idint,namevarchar2(20))zhi: 2.插入测试数据dao,如下图 insertintot ...

  6. idea中查看maven信息

    本文来说下idea中如何查看maven中的信息. 文章目录 idea中查看maven信息 idea中查看maven信息 idea中查看maven信息

  7. JS文件中的敏感信息+swagger接口测试

    01 JS中的敏感信息 实战中会经常遇到很多js文件,在js文件中很可能会遇到一些敏感信息和路径之类的,遇到路径可以尝试拼接,有可能会遇到未授权的情况等等,也有很多站点是webpack打包,可以F12 ...

  8. SAPERP软件如何修改采购订单信息记录中的净价?

    作者:Chisting 声明:本文章仅用于SAP软件的应用与学习,不代表SAP公司.(注:文中所示截图来源SAP软件,相应著作权归SAP所有.) 在SAP系统中如果采购信息记录中的净价维护错误,是可以 ...

  9. python中request获取数据,Python 中request数据的获取

    @app.route('/users', methods=['GET', 'POST']) def users(): print "Hello, World!" print(req ...

最新文章

  1. linux网卡钩子,linux-Netfilter钩子注册与网络子系统
  2. 趁老婆不在家,我把儿子带成了程序大神...
  3. 安装acdsee 3.1后出错
  4. BZOJ.3277.串(广义后缀自动机)
  5. [转]淘宝下单高并发解决方案
  6. Spring Cloud-微服务架构集大成者
  7. POJ 3461 字符串匹配(KMP / 哈希(有推导))
  8. linux -rpm,linux 的rpm命令
  9. 微擎框架小程序 入口
  10. 搭建学习linux的系统环境准备
  11. 软件one pin错误是啥意思_理想ONE,从交车就开始道歉,是有礼貌的新势力
  12. Scala编程指南——用更少的字做更多的事
  13. 使用 urllib 构造请求对象
  14. Instgram和color,谁会更成功?
  15. jeecg框架解决跨域问题
  16. (附源码)计算机毕业设计ssm基于JAVA宠物店管理系统
  17. 实测 ubuntu 20.04 使用 lidar_imu_calib 功能包 进行 激光雷达与imu标定
  18. numpy对数据集进行shuffle
  19. 十年自学编程成才(编程小白必看)
  20. 深蓝学院-视觉SLAM理论与实践-第十二期-第3章作业

热门文章

  1. 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波5 - 分段线性变换 - 灰度级分层
  2. 微信转账一次显示两个_微信为啥分红包和转账两大功能?这4个区别你要知道,望相互转告...
  3. html5清除手机页面缓存文件夹,WebView自动缓存-清除缓存
  4. oracle对sga统计信息不对,oracle 索引失效原因及解决方法
  5. FL-EM7688 Smart评估板openwrt开发环境搭建(linux固件部分)
  6. LOJ2195 旅行
  7. 获取网址中参数的方式
  8. Android ContentProvider
  9. ps4连接r星服务器稳定,移植到不同平台的《GTA5》有什么变化?与八年前相比,差距这么大...
  10. 树莓派超声波模块测距