做网站销售那里找客户江门网站开发多少钱
1.HTTP协议是什么?
HTTP协议是一种超文本传输协议,它是从WEB服务器传输超文本标记语言(HTML)到本地浏览器的传送协议。
设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。
我们平时输入 URL 来进行搜索的时候,一般开头就会有 http 或者 https。
常见的HTTP(超文本传输协议,默认端口80)、HTTPS(默认端口443)、SMTP(传邮件.默认端口25)、FTP(传文件,默认端口21)、Telnet(远程登录,默认端口23)
2.HTTP的原理
HTTP 协议工作于客户端-服务端架构上。
浏览器作为 HTTP 客户端通过 URL 向 HTTP 服务端即 WEB 服务器发送所有请求。
Web 服务器根据接收到的请求后,向客户端发送响应信息。
HTTP 默认端口号为 80,但是你也可以改为 8080 或者其他端口。
访问百度:
3.HTTP版本
HTTP0.9:只支持GET这一个请求方式,只能访问HTML格式的资源。没有 Header 等描述数据的信息。服务器在发送数据完毕后,就关闭 TCP 连接。
HTTP1.0:增加了 POST、PUT请求。一次请求创建一次连接获得一个Web资源,响应后就会断开连接,下一个请求需要再次建立 TCP 连接。(三次握手)因此效率很低。默认短链接。
HTTP1.1(目前主流):一次请求创建一次连接,可以允许多个HTTP请求,获得多个web资源,默认长连接。
持久连接,即 TCP 连接默认不关闭,可以被多个请求复用,提高了请求性能。
管道机制(pipeline),即在同一个 TCP 连接里面,客户端可以同时发送多个请求。例如,浏览器同时发出 A 请求和 B 请求,但是服务器还是按照顺序,先回应 A 请求,完成后再回应 B 请求。
HTTP2.0:HTTP2 主要解决了传输性能的问题。增加双工模式,不仅客户端能够同时发送多个请求,服务端也能同时处理多个请求,是一个并行的效率。 HTTP2 中,对头信息进行了压缩,减少了对带宽的占用。
4.HTTP 报文格式
请求端(客户端)的 HTTP 报文叫做请求报文,响应端(服务器端)的叫做响应报文。
客户端请求消息:
请求报文是由请求行(请求方法+请求 URL+协议版本)、请求头部、空行、请求主体四部分组成
GET/sample.jspHTTP/1.1 请求行
Accept:image/gif.image/jpeg, 请求头部
Accept-Language:zh-cn
Connection:Keep-Alive
Host:localhost
User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)
Accept-Encoding:gzip,deflateusername=jinqiao&password=1234 请求主体
服务端响应消息:
HTTP响应也由四个部分组成,分别是:状态行、响应首部、空行和响应主体。
HTTP/1.1 200 OK 状态行
Server:Apache Tomcat/5.0.12 响应首部
Date:Mon,6Oct2003 13:23:42 GMT
Content-Length:112<html> 响应主体<head><title>HTTP响应示例<title></head><body>Hello HTTP!</body>
</html>
5.HTTP方法
序号 | 方法 | 描述 |
---|---|---|
1 | GET | 请求指定的页面信息,并返回实体主体。 |
2 | HEAD | 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头 |
3 | POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。 |
4 | PUT | 从客户端向服务器传送的数据取代指定的文档的内容。 |
5 | DELETE | 请求服务器删除指定的页面。 |
6 | CONNECT | HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。 |
7 | OPTIONS | 允许客户端查看服务器的性能。 |
8 | TRACE | 回显服务器收到的请求,主要用于测试或诊断。 |
9 | PATCH | 是对 PUT 方法的补充,用来对已知资源进行局部更新 。 |
HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD 方法。
HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
可以把PUT、DELETE、POST、GET理解为客户端对服务端的增删改查
- PUT:上传文件,向服务器添加数据,可以看作增
- DELETE:删除文件
- POST:传输数据,向服务器提交数据,对服务器数据进行更新
- GET:获取资源,查询服务器资源
6.HTTP的长连接和短链接
在HTTP/1.0中,默认使用的是短连接。也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。如果客户端浏览器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话。
但从 HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头有加入这行代码:Connection:keep-alive
在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的 TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接要客户端和服务端都支持长连接。
HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。
7.HTTP 响应头信息
应答头 | 说明 |
---|---|
Allow | 服务器支持哪些请求方法(如GET、POST等)。 |
Content-Encoding | 文档的编码(Encode)方法。只有在解码之后才可以得到Content-Type头指定的内容类型。 |
Content-Length | 表示内容长度。只有当浏览器使用持久HTTP连接时才需要这个数据。 |
Content-Type | 表示后面的文档属于什么MIME类型。Servlet默认为text/plain,但通常需要显式地指定为text/html。 |
Date | 当前的GMT时间。 |
Expires | 应该在什么时候认为文档已经过期,从而不再缓存它? |
Last-Modified | 文档的最后改动时间。 |
Location | 表示客户应当到哪里去提取文档。 |
Refresh | 表示浏览器应该在多少时间之后刷新文档,以秒计。 |
Server | 服务器名字。Servlet一般不设置这个值,而是由Web服务器自己设置。 |
Set-Cookie | 设置和页面关联的Cookie。 |
WWW-Authenticate | 客户应该在Authorization头中提供什么类型的授权信息?在包含401(Unauthorized)状态行的应答中这个头是必需的。 |
8.HTTP 状态码
- 200:服务器已经成功处理了请求
- 301:(永久移动)请求的网页已经永久移动到新的位置。服务器返回此响应时,会自动将请求者转到新的位置
- 302:(临时移动)服务器目前从不同位置的网页响应请求,但请求者应该继续使用原有位置来进行以后的请求。
- 400:客户端请求有语法错误,不能被服务器所理解
- 403:服务器收到请求,但是拒绝访问对应资源
- 404:服务器找不到请求网页(未找到)
- 500:服务器遇到错误,无法完成请求(服务器内部错误)。
9.HTTP常见Header
- Host:客户端告知服务器,所请求的资源在哪儿
- Connection:默认值是keep-alive,要求服务器不要关闭TCP连 接,close()表示明确要求关闭连接。
- Accept-Encoding:说明自己可以接收的压缩方式
- User-Agent:声明用户的操作系统和浏览器版本信息
- Content-Type:数据类型,常见的有html、 image/jpeg,image/png,video/mp4,application/json,zip
- Content-Length:Body的长度,请求和响应头都可以使用
- Location:搭配3**状态码使用,告诉客户端接下来要去哪里访问
- Cookie:用于在客户端存储少量信息.通常用于实现会话的功能
- Set-Cookie:服务器向客户端设置Cookie;
- Referer: 当前页面是从哪个页面跳转过来的
10.HTTP 三点注意事项:
-
HTTP 是无连接:无连接的含义是限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接,采用这种方式可以节省传输时间。
-
HTTP 是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送,客户端以及服务器指定使用适合的 MIME-type 内容类型。
-
HTTP 是无状态:HTTP 协议是无状态协议,无状态是指协议对于事务处理没有记忆能力,缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大,另一方面,在服务器不需要先前信息时它的应答就较快。
11.HTTP和HTTPS的区别
HTTP | HTTPS | |
端口 | 80 | 443 |
安全性 | 无加密,安全性较差 | 有加密机制,安全性较高 |
资源消耗 | 较少 | 由于加密处理,资源消耗更多 |
是否需要证书 | 不需要 | 需要 |
协议 | 运行在TCP协议之上 | 运行在SSL协议之上,SSL运行在TCP协议之上 |