[头参数]08 - 数据协商

目录

  1. 参数
  2. 观察参数
  3. 测试压缩
  4. 测试数据类型

0. 概述

  1. 数据协商是客户端和服务端的达成的一种协议,客户端通过请求头告诉服务端它想要的什么样的数据,服务端则通过响应头告诉客户端它返回的是什么样的数据。
  2. 这仅是一种协议,服务端可以不给客户端它想要的格式,客户端也可以不按照服务端给的格式进行显示。

1. 参数

请求头 响应头 功能
Accept Content-Type 数据类型使用mimetype声明
Accept-Encoding Content-Encoding 通常用于压缩的格式
Accpet-Language Content-Language 语言
User-Agent ------ 我是谁(例如火狐,Chorme,手机,各种语言的爬虫)

2. 观察参数

  • 代码
/**
 * 1. 观察请求头和响应头中的数据协商
 */
const http = require('http')
const port = 9000

http.createServer(function (request, response) {

  response.writeHead(200, {
    'Content-Type': 'text/html',
  })
  response.end('
I am html
') }).listen(port) console.log("serve is listen ", port)
  • 测试
  1. q代表权重

3. 测试压缩

  • 不使用压缩

随意读入一个html

/**
 * 1. 测试gzip压缩
 */
const http = require('http')
const fs = require('fs')
const zlib =require('zlib')
const port = 9000

http.createServer(function (request, response) {

  const html = fs.readFileSync('index.html')
  response.writeHead(200, {
    'Content-Type': 'text/html',
  })
  // 不使用压缩  
  // response.end(html)

}).listen(port)

console.log("serve is listen ", port)

第一行的大小为:响应头 + 压缩的响应体(如果没压缩就是原本的响应体)
第二行的大小为:解压缩后的响应体


  • 使用压缩
/**
 * 1. 测试gzip压缩
 */
const http = require('http')
const fs = require('fs')
const zlib =require('zlib')
const port = 9000

http.createServer(function (request, response) {

  const html = fs.readFileSync('index.html')
  response.writeHead(200, {
    'Content-Type': 'text/html',
    // 使用压缩
    'Content-Encoding': 'gzip'
  })
  // 使用压缩
  response.end(zlib.gzipSync(html))
  // 不使用压缩  
  // response.end(html)

}).listen(port)

console.log("serve is listen ", port)

可以观察到第一行的大小变小了,原因就是响应体被压缩了。


4. 测试数据类型

  • 代码
  1. js部分,返回一个html即可
  2. html部分完成一个表单
  3. enctype默认值就是application/x-www-form-urlencoded
姓名: 性别:
  • 观察
  1. 如果是GET方法,则会自动放在url后面,如果是POST则会直接放入响应体中。


  • 表单中需要传递文件

你可能感兴趣的:([头参数]08 - 数据协商)