HTTP请求-请求头

HOST:表示服务器主机的地址和端口

URL上已经有HOST了,这里的Host和URL中的ip地址和端口,绝大多数情况下是一样的,少数情况可能不同。

Content-Length:表示body中的数据长度

        可以通过这个长度来处理粘包问题,HTTP底层也是基于TCP,连续传输多个HTTP数据报,此时接收方这边的接收缓冲区里就会积累多个包的数据,应用程序在读取这些数据的时候就需要明确包之间的边界。

        如果没有body的请求/响应,直接使用空行作为分隔符了。

        如果有body,空行就不是结束标记了,从空行开始读body,body要读多长就取决于Content-Length,读完之后,这个包就结束了。

Content-Type:表示请求的body中的数据格式

        body可以传输很多格式的数据,包括程序员也可以自己约定任意的格式。但是有些格式是非常常见的。

请求中:

1)application/json:body就是json

2)application/x-www-form-urlencoded:称为form表单,通过HTML中的form标签构造出来的一种格式,这个格式的特点就是把query string放到body里了(也可以上传文件)

3)multipart/form-data:上传文件时使用。

响应中:

1)text-plain:纯文本

2)text/html:HTML

3)text/css:css

4)application/javascript:js

5)application/json

6)image/jpg

7)image/png

        由于浏览器和服务器之间要进行多次网络交互,整体的过程是比较低效的,为了提升效率,就会把一些固定不变的内容浏览器本地的机器硬盘上进行缓存。(css,图片,js)

        保存到硬盘上之后,后续再请求,就可以直接从硬盘上读取数据,减少了网络交互的开销。使用ctrl+F5强制刷新,就可以不读取缓存,直接读取服务器数据了。

        正常来说,响应都有Content-Type,只要有body。 

        实际上,如果响应确实没有Content-Type,也没有body,有的浏览器(例如chrome)能猜。浏览器的容错能力很强的程序,即使返回的数据有问题,也能尽可能正确的显示出来。(鲁棒性

User-Argent(简称UA)

User-Argent:操作系统信息+浏览器信息 => 描述了用户使用怎么样的设备上网

在之前,UA是非常关键的部分,不同用户使用的上网设备,差异很大。

同一时间段内,新旧会同时出现。同一时刻,这些浏览器都会存在于市场上。

1)最老的浏览器只能显示文本        2)之后能显示图片        3)能支持js        4)支持flash.....

如果写一个网站使用了新特性老的设备就无法打开不使用,则这个网站比不过竞争对手。

借助UA就能解决上述问题:服务器可以针对此时的UA进行判断。

如果用户使用的是很老的设备,返回的页面就不包含新特性,确保这个页面能够正常访问;

如果用户用的是新设备,返回的页面就包含新特性,确保用户体验。

        UA里包含了系统信息,就可以判定系统是PC的系统还是移动端的系统,此时就可以根据这个信息来返回不同的页面了。

        使用手机浏览器的时候,很多的手机浏览器都有一个功能,手动修改UA,就能访问电脑版的网页了。

        一方面,平板这样的设备,虽然小,但是是宽屏,不能和PC/手机划为一类。另一方面,给PC维护一套,手机另一套,太麻烦。

响应式布局(前端提出的解决方案)

通过一套代码,适应不同尺寸的显示器。

        css3提供了一个特性“媒体查询”:可以感知到当前屏幕的尺寸,根据尺寸应用不同样式

现在已有越来越多的网站不再依赖UA进行区分了。

Referer:描述了当前这个页面从哪里来的

        浏览器中,直接输入url/点击收藏夹打开的网页,是没有referer的。

搜索广告中,都是按照点击收费的。

        用户每次点击广告,搜索软件都能赚钱。必然要记录某个广告在某个时间段内被点击多少次。

双方都要统计:1)广告商:服务器上记录日志:百度,搜狗,谷歌.... => 哪些请求是对应的搜索软件引流的。 => 借助referer即可

                         2)搜索软件:点击会先把请求发到自己的服务器,记录日志就知道了。

referer会被篡改:

1)有动机

2)有能力:运营商提供了通信设施,在路由器/交换机上部署程序,让程序解析HTTP数据,把referer改成自己的就好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值