网络协议-HTTP协议详情讲解

目录

HTTP协议内容和方法

HTTP请求常见请求头

 HTTP常见返回头

HTTP协议基本方法

常见HTTP状态码

面试解惑:301 vs 308

面试解惑:302 / 303 / 307

常见HTTP头

User-Agent

Content-Type

Origin

Accept

Referer

Connection


HTTP协议内容和方法

HTTP请求常见请求头

 HTTP常见返回头

  

HTTP协议基本方法

GET:从服务器获取资源

POST:在服务器创建资源

PUT:在服务器修改资源(幂等性)(同一个请求多次调用产生的是一个结果)

DELETE:在服务器删除资源

其他方法

OPTIONL:跨域部分讲解

TRACE:用于显示调试信息(多数网站不支持,因为会泄露调试信息,追溯整个HTTP请求的链路)

CONNECT:代理部分讲解

PATCH:对资源进行部分更新(极少用)

常见HTTP状态码

  • 1xx:提供信息
  • 100 continue
  • 101切换协议(switch protocol)

  • 2xx:成功
  • 200 - OK
  • 201 - Created 已创建
  • 202 - Accepted 已接收
  • 203 - Non-Authoritative Information 非权威内容(代理方在-中间被修改过)
  • 204 - No Content 没有内容
  • 205 - Reset Content 重置内容
  • 206 - Partial Content 服务器下发了部分内容(range header)
  • 注:多数服务端开发已经不遵循状态码,我们在restful部分讨论
  • 3xx:重定向
  • 300 - Multiple Choices用户请求了多个选项的资源(返回选项列表)
  • 301 - Moved Permanently 永久转移
  • 302 - Found资源被找到(以前是临时转移)
  • 303 - See Other 可以使用GET方法在另一个URL找到资源(302拆分得到)
  • 304 - Not Modified hash没有修改 (缓存部分特别说明)
  • 305 - Use Proxy 需要代理
  • 307 - Temporary Redirect 临时重定向(302拆分得到)
  • 308 - Permanent Tedirect 永久重定向
  • 4xx:客户端错误
  • 400 - Bad Request 请求格式错误
  • 401 - Unauthorized 没有授权,(跳登录)
  • 402 - Payment Required 请先付费(跳到支付方法)
  • 403 - Forbidden 禁止访问 (联系管理员,看看是否改为允许访问)
  • 404 - Not Found 没有找到
  • 405 - Method Not Allowed 方法不被允许
  • 406 - Not Acceptable 服务端可以提供的内容和客户端期待的不一样
  • 注:多数服务端开发已经不遵循状态码,我们在restful部分讨论
  • 5xx:服务端错误
  • 500 - Internal Server Error (内部服务器错误)
  • 501 - Not Implemented (没有实现)(有这个接口,但是还没写完)
  • 502 - Bad Gateway (网关错误)
  • 503 - Service Unavailable (服务不可用)
  • 504 - Gateway Timeout (网关超时)
  • 505 - HTTP Version Not Supported (版本不支持)
  • 注:多数服务端开发已经不遵循状态码,我们在restful部分讨论

面试解惑:301 vs 308

共同点:资源被永久移动到新的地址

差异:

  1. 客户端收到308请求后,之前是什么method,那么之后也会延用这个method(POST/GET/PUT)到新地址
  2. 客户端收到301请求后,通常用户会向新地址发起GET请求

面试解惑:302 / 303 / 307

共同点:

  1. 资源临时放到新地址(请不要缓存)

差异:

  1. 302是http1.0提出的,最早叫做Moved Temporarily;很多浏览器实现的时候没有遵照标准,把所有请求都重定向为GET
  2. 1999年标准委员会增加了303和307,并将302重新定义为Found。
  3. 303告诉客户端使用GET方法重定向资源
  4. 307告诉客户端使用原请求的method重定向资源

常见HTTP头

Content-Length

发送给接收者的Body内容长度(字节)

  • 一个byte是8bit
  • Utf-8编码的字符1-4个字节

User-Agent

帮助区分客户端特性的字符串

  • 操作系统
  • 浏览器
  • 制造商(手机类型等)
  • 内核类型
  • 版本号......

Content-Type

帮助区分资源的媒体类型(Media Type/MIME Type)

  • text/html
  • text/css
  • application/json
  • image/jpeg
  • ......

Origin

描述请求来源地址

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

Accept

建议服务端返回何种媒体类型(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

Referer

告诉服务端打开当前页面的上一张页面的URL;如果是ajax请求,那么就告诉服务端发送请求的URL是什么(当前页面网址)

  • 非浏览器环境有时候不发生Referer(或者虚拟Referer,通常是爬虫)
  • 常常用于用户行为分析

Connection

决定连接是否在当前事务完成后关闭

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

思考讨论:

思考平时工作中前端和服务端有没有遵循HTTP协议规范?

HTTP协议相关代理/安全/缓存/跨域等重点内容见后续文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值