一、请求头与返回头

1、DNS概述

HTTP协议通过请求头返回头控制协议工作。无论是请求头还是返回头都是Key/Value的形式

2、常见请求头

2.1、Content-Length

Content-Length:发送/接收Body内容的字节数

hutool HttpRequest 返回unicode中文_http

2.2、User-Agent

User-Agent:这个字段可以帮助统计客户端用了什么浏览器、操作系统等

hutool HttpRequest 返回unicode中文_http_02

2.3、Content-Type

Content-Type:请求的时候,告知服务端数据的媒体类型(Media Type/MIME Type)。返回的时候告知客户端,数据的媒体类型。

hutool HttpRequest 返回unicode中文_网络协议_03

2.3、Origin

Origin:描述请求来源地址

  • 例如:scheme://host:port
  • 不含路径
  • 可以是null

hutool HttpRequest 返回unicode中文_服务器_04

2.4、Accept

Accept:是HTTP协议协商能力的体现,用于建议服务端返回何种媒体类型(MIME Type)

  • */*代表所有类型(默认)
  • 多个类型用逗号隔开,例如:text/html, application/json
  • Accept-Encoding:建议服务端发送那种编码(压缩算法)
  • Deflate, gzip;q=1.0;q=0.5
  • Accept-Language: 建议服务端传递哪种语言
  • Accept-Language: fr-CH, fr;q=0.9,en;q=0.8,de;q=0.7,*;q=0.5

hutool HttpRequest 返回unicode中文_客户端_05

2.6、Connection

Connection:决定HTTP连接(不是TCP连接)是否在当前事务完成后关闭

  • Http1.0默认是close
  • Http1.1后默认是keep-alive

hutool HttpRequest 返回unicode中文_服务器_06

 

二、HTTP的方法

1、HTTP的方法

  • GET:从服务器获取资源
  • POST:在服务器创建资源(幂等性)
  • PUT:在服务器修改资源
  • DELETE:在服务器删除资源
  • OPTION:跨域部分讲解
  • TRACE:用于显示调试信息 多数网站不支持
  • CONNECT:代理部分讲解
  • PATCH:对资源进行部分更新(极少用)

2、状态码

  • 1xx:提供信息
  • 100 continue 101 切换协议(switch protocol)
  • 2xx:成功
  • 3xx:重定向
  • 4xx:客户端错误
  • 5xx:服务端错误

3、2xx状态码

  • 200 - OK
  • 201 - Created 已创建
  • 202 - Accepted 已接收
  • 203 - Non-Authoritative Information 非权威内容
  • 204 - No Contet 没有内容
  • 205 - Reset Content 重置表单
  • 206 - Partial Content 服务器下发了部分内容(range header)

4、3xx状态码

  • 300 - Multiple Choices 用户请求了多个选项的资源(返回选项列表)
  • 301 - Moved Permanently 永久转移
  • 302 - Found 资源被找到(以前是临时转移)
  • 303 - See Other 可以使用get方法在另外一个URL找到资源
  • 304 - Not Modify 没有修改(缓存部分特别说明)
  • 305 - Use Proxy 需要代理
  • 307 - Temporary Redirect 临时重定向
  • 308 - Permanent Redirect 永久重定向 

5、301和308

  • 共同点
  • 资源被永久移动到新的地址
  • 差异
  • 客户端收到308请求后,沿用旧的method(POST/GET/PUT)到新地址
  • 客户端收到301请求后,通常用户会向新地址发起GET请求

6、302/303/307

  • 共同点
  • 资源临时放到了新地址
  • 差异
  • 302是http1.0提出的,最早叫做Moved Temporary;很多浏览器实现的时候没有遵循标准,把所有请求都重定向为GET
  • 1999年标准委员会增加了303和307,并将302重新定义为Found。
  • 303告诉客户端使用GET方法重定向资源
  • 307告诉客户端使用原请求的method重定向资源

7、4xx状态码

  • 400 - Bad Request 请求格式错误
  • 401 - Unauthorized 没有授权
  • 402 - Payment Required 请先付费
  • 403 - Forbidden 禁止访问
  • 404 - Not Found 没有找到
  • 405 - Method Not Allowed 方法不被允许
  • 406 - Not Acceptable 服务端可以提供的内容和客户端期待的不一样

8、5xx状态码

  • 500 - Internal Server Error(内容服务器错误)
  • 501 - Not Implemented(没有实现)
  • 502 - Bad Gateway(网关错误)
  • 503 - Service Unavailable(服务不可用)
  • 504 - Gateway Timeout(网关超时)
  • 505 - HTTP Version Not Supported(版本不支持)