HTTP协议


协议是指通信的双方,在通信流程或内容格式上,共同遵守的标准
HTTP协议是互联网中最常见的网络通信标准
HTTP通信特点
1、通信流程:断开式(无状态)

  • 断开式:HTTP协议每次响应完成后,会断开与客户端的连接
  • 无状态:由于服务器断开了之前的连接,就无法知晓连接之间的关系

2、内容格式:消息头和消息体

请求方法

HTTP/1.1协议中共定义了八种方法(有时也叫“动作”),来表明request-url指定的资源不同的操作方式

  • OPTIONS: 返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送 ‘*’ 的请求来测试服务器的功能性
  • HEAD: 向服务器所欲GET请求相一致的相应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元消息。
  • GET: 向特定的资源发出请求。它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。GET请求中,永远不会包含呈现数据。
  • POST: 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 Loadrunner中对应POST请求函数:web_submit_data,web_submit_form
  • PUT: 向指定资源位置上传其最新内容
  • DELETE 请求服务器删除request-url所标识的资源
  • TRACE: 回显服务器收到的请求,主要用于测试或诊断
  • CONNECT: HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

HTTP请求方式

参考:/吃瓜 点我看文章

GET请求

GET通常用于获取数据端数据。
常见的请求方式有:URL、src/href、表单(form)
GET方式提交特点
1、get方式在url后面拼接参数,只能以文本的形式传递参数。
2、传递的数据量小,只能有1024个字节(不通浏览器也许有差别)
3、安全性低,会将数据信息显示在地址栏
4、速度快,一般用于安全性要求不高的请求。

POST请求

POST就是发送、提交。可以向指定的资源提交要被处理的数据。
如果使用表单方式进行提交,表单的method必须设置为POST。
POST方式提交特点
1、post提交数据相对于get会安全一些。(通过抓包软件也可以看到数据内容,安全性要求高可以进行加密)
2、传递数据量大,没有长度限制。
3、请求不会被缓存,也不会保留在浏览器的历史记录中。
4、用于密码等安全性要求高的场合,提交数据量较大的场合,如上传文件,发布文章等。
5、POST方式提交数据上限默认为8M(可以在PHP的配置文件post_max_size选项中修改)

GET和POST的区别

它们本质上没有什么区别,都是TCP链接,能做的事情没什么差别,但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。
还有一个比较大的区别就是GET请求,浏览器会把http header和data 一起发送出去,服务器响应200 OK(返回数据)只发送一个数据包;而POST 会将header先发送出去,服务器响应100 continue,浏览器在发送data,服务器响应200 OK(返回数据)需要发送两个数据包。
在网络环境好的情况下,两者所用的时间差别可以忽略,但是在网络不好的时候,数据包的完整性上POST更有优势。

GET和HEAD的区别

GET: GET可以说是2113最常见的了,它本质就是发送一个请求来取得服务器上的5261某一资源。资源通过一组HTTP头和呈现据(如HTML文本,或者图片或者视频等)返回给客户端。4102GET请求中,永远不会包含呈现数据
HEAD: HEAD和GET本质是一样的,区别在于1653HEAD不含有呈现数据,而仅仅是HTTP头信息。有的人可能觉得这个方法没什么用,其实不是这样的。想象一个业务情景:欲版判断某个资源是否存在,我们通常使用GET,但这权里用HEAD则意义更加明确。

HTTP状态码

参考:/吃瓜 点我看文章

  • 状态码的作用: web服务器用来告诉客户端,发生了什么事。
    状态码位于HTTP response的第一行中,会返回一个“三位数字的状态码”和一个“状态消息”
    “三位数字的状态码”便于程序进行处理,“状态消息”更便于人理解
    在这里插入图片描述

状态码分类

目前使用的HTTP协议版本是1.1,假如看到了一个状态码是518,但是不知道具体是什么意思,这是只要知道518属于(5xx,服务器错误就行)

  • 1xx 信息提示,范围在100-101.
  • 2xx 成功或错误,范围在200-206
  • 3xx 重定向,范围在300-305
  • 4xx 客户端错误,范围在400-415
  • 5xx 服务器错误 ,范围在500-505

常见的状态码

  • 200 OK 服务器成功处理了请求
  • 301/302 Moved Permanently(重定向) 请求的URL已移走。Response中应该包含一个Location URL, 说明资源现在所处的位置
  • 304 Not Modified(未修改) 客户的缓存资源是最新的, 要客户端使用缓存
  • 404 Not Found 未找到资源
  • 501 Internal Server Error 服务器遇到一个错误,使其无法对请求提供服务

常用的HTTP响应头

  • **Allow:**服务器支持哪些请求方法;例如:Allow: GET,POST
  • Content-Encoding: 响应资源使用的编码类型;例如:Content-Encoding:gzip;
  • Transfer-Encoding: 用表示实体传输给用户的编码形式。包括:chunked、compress、 deflate、gzip、identity。Transfer-Encoding: chunked
  • Access-Control-Allow-Origin: 指定哪些网站可以跨域原资源共享;例如Access-Control-Allow-Origin: *
  • Accept-Patch: 指定服务器所支持的文档补丁格式;例如:Accept-Patch: text/example;charset=utf-8
  • Age: 响应对象在代理缓存中存在的时间,以秒为单位;Age: 12
  • Cache-Control: 通知从服务器到客户端内的所有缓存机制,表示它们是否可以缓存这个对象及缓存有效时间。其单位为秒 Cache-Control: max-age=3600
  • Connection: 针对该链接所预期的选项Connection: close
  • Content-Disposition: 对已知MIME类型资源的描述,浏览器可以根据这个响应头决定是对返回资源的动作,如:将其下载或是打开Content-Disposition: attachment; filename="fname.ext"
  • Content-Language: 响应内容所使用的的语言Content-Language: zh-cn
  • Content-Location: 所返回的数据的一个候选位置 Content-Location: /index.htm
  • Content-Range: 如果是响应部分消息,表示属于完整消息的哪个部分Content-Range: bytes 21010-47021/47022
  • Date: 此条消息被发送时的日期和时间(以RFC 7231中定义的"HTTP日期"格式来表示)Date: Tue, 15 Nov 1994 08:12:31 GMT
  • ETag: 对于某个资源的某个特定版本的一个标识符,通常是一个 消息散列ETag: "737060cd8c284d8af7ad3082f209582d"
  • Expires: 指定一个日期/时间,超过该时间则认为此回应已经过期Expires: Thu, 01 Dec 1994 16:00:00 GMT
  • Last-Modified: 所请求的对象的最后修改日期(按照 RFC 7231 中定义的“超文本传输协议日期”格式来表示)Last-Modified: Dec, 26 Dec 2015 17:30:00 GMT
  • Link: 用来表示与另一个资源之间的类型关系,此类型关系是在RFC 5988中定义Link: ; rel="alternate"
  • Location 用于在进行重定向,或在创建了某个新资源时使用.Location: http://www.itbilu.com/nodejs
  • P3P: P3P策略相关设置P3P: CP="This is not a P3P policy!
  • Pragma: 与具体的实现相关,这些响应头可能在请求/回应链中的不同时候产生不同的效果Pragma: no-cache
  • Proxy-Authenticate: 要求在访问代理时提供身份认证信息Proxy-Authenticate: Basic
  • Public-Key-Pins: 用于防止中间攻击,声明网站认证中传输层安全协议的证书散列值Public-Key-Pins: max-age=2592000; pin-sha256="……";
  • Refresh: 用于重定向,或者当一个新的资源被创建时。默认会在5秒后刷新重定向。Refresh: 5; url=http://itbilu.com
  • Retry-After: 如果某个实体临时不可用,那么此协议头用于告知客户端稍后重试。其值可以是一个特定的时间段(以秒为单位)或一个超文本传输协议日期。示例1:Retry-After: 120;示例2: Retry-After: Dec, 26 Dec 2015 17:30:00 GMT
  • Trailer: Trailer用户说明传输中分块编码的编码信息Trailer: Max-Forwards
  • Upgrade 要求客户端升级到另一个高版本协议Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11
  • Vary: 告知下游的代理服务器,应当如何对以后的请求协议头进行匹配,以决定是否可使用已缓存的响应内容而不是重新从原服务器请求新的内容。Vary: *
  • Via: 告知代理服务器的客户端,当前响应是通过什么途径发送的。Via: 1.0 fred, 1.1 itbilu.com (nginx/1.6.3)
  • WWW-Authenticate: 表示在请求获取这个实体时应当使用的认证模式。 WWW-Authenticate: Basic
  • 15
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值