HTTP之数据协商

什么是数据协商

客户端发送一个请求的时候,会在请求头中声明,我此次请求想拿到的数据格式和一些其他内容的限制,而服务端会根据客户端请求的限制,将处理之后的数据按照客户端的要求,返回给客户端。

类型分类


请求类型


在这里插入图片描述

Accept

在这里插入图片描述
指定我想要的数据类型,就是可以接受返回的数据格式

Accept-Encoding

在这里插入图片描述
指定返回数据类型的编码方式,主要是限制服务端,对数据的压缩方式,例如:gzip,deflate, br(用的还比较少)

Accept-Language

在这里插入图片描述
返回的信息,是英文还是中文,· zh;q=0.9, · 代表可以接受的一种语言,q=0.9代表权重,数值越大,越优先返回,这种语言的数据

User-Agent

在这里插入图片描述
返回的页面是移动端的,还是PC端的,因为显示的布局不一样,Mozilla/5.0(很多老的服务器,只支持这种头),AppleWebKit (浏览器内核,苹果公司开发的),Chrome/76.0 (浏览器的版本号),Safari (因为内核是苹果公司开发的,所以会加上它)

返回类型

在这里插入图片描述

Content

和Accept相反,说明返回的数据是什么类型

Content-Type

在这里插入图片描述
说明,实际返回的数据类型是什么格式的,例如:text/javascript, aplication/javascript, text/html等,指定其一,让客户端知道该以什么样的方式来显示数据
在MIME Type中,有它可以声明的类型

MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的因特网标准。
MIME 消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。
不同的应用程序支持不同的 MIME 类型。

文章末尾会介绍常用的MIME TYPE

Content-Encoding

在这里插入图片描述
对应Accept-Encoding,服务端使用的实际压缩返回数据的格式

Content-Language

返回的是什么语言的数据

源码

使用方法

  1. 创建文件, client.js,test.html文件 *本地环境需要安装了node
  2. 在当前目录的命令行运行命令
node  client.js 
  1. 打开浏览器, 地址栏输入
http://localhost:8888
  1. 打开检查

图例
在这里插入图片描述

文件的具体内容

client.js

const http = require('http');
const fs = require('fs');

http.createServer( (request, response) => {
  console.log("请求的路径", request.url);
  if( request.url == '/') {

    response.writeHead(200, {
      'Content-Type': 'text/html; charset=utf-8',
      'Content-Encoding': 'gizp'
    })

    const html =  fs.readFileSync('./test.html', 'utf-8');
    response.end(html);
  } 
}).listen(8888);

console.log("开始运行客服端 PORT: 8888")

test.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>
  <div>我是网站页面</div>
</body>
<script src="/script.js"></script>
</html>

常用的MIME

VideoType ExtensionMIME Type
MPEG-4.mp4video/mp4
Ogg Video.ogvvideo/ogg
Flash Video.flvvideo/x-flv
A/VInterleave.avi
Microsoft Windows Media.wmvvideo/x-ms-wmv
RealMedia Variable Bitrate.rmvbapplication/vnd.rn-realmedia-vbr
reine Textdateien.txttext/plain
ZIP-Archivdateien.zipapplication/zip
TAR.tarapplication/x-tar
Portable Network Graphics (PNG).pngimage/png
JPEG Image.jpeg, .jpgimage/jpeg
Graphics Interchange Format.gifimage/gif
Waveform Audio File Format (WAV).wavaudio/x-wav
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值