摘自:https://www.cnblogs.com/ranyonsue/p/5984001.html
- HTTP简介
- HTTP,Hyper Text Transfer Protocol(超文本传输协议),是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。
- HTTP是一个基于TCP/IP通信协议来传递数据
- 过程:HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。
- URL
- (Uniform Resource Identifiers, URI)
- URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息
- http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name
- 协议部分: “http:”,在"HTTP"后面的“//”为分隔符
- 域名部分: “www.aspxfans.com”
- 端口部分: 跟在域名后面的是端口,域名和端口之间使用“:”作为分隔符,端口不是 URL 的部分,如果省略,采用默认端口
- 虚拟目录部分:/news/”,从域名后的第一个“/”开始到最后一个“/”为止
- 文件名部分:“index.asp”,
- 从域名后的最后一个“/”开始到“?”为止,是文件名部分,
- 如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,
- 如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分
- 锚部分:“name”,从“#”开始到最后,都是锚部分
- 参数部分:“boardID=5&ID=24618&page=1”,从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分
- URI和URL的区别
- URI,uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。
- URL,uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。
- HTTP之请求消息Request
- 请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。
HTTP/1.1 200 OK
Date: Fri, 22 May 2009 06:07:21 GMT
Content-Type: text/html; charset=UTF-8
<html>
<head></head>
<body>
<!--body goes here-->
</body>
</html>
- 请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。
- HTTP之响应消息Response
- 状态行、消息报头、空行和响应正文。
- 状态行,由HTTP协议版本号(HTTP/1.1),状态码(200),状态消息 (OK)
- 消息报头,用来说明客户端要使用的一些附加信息
- 空行,消息报头后面的空行是必须的
- 响应正文,服务器返回给客户端的文本信息。
- HTTP之状态码
- 1xx:指示信息--表示请求已接收,继续处理
- 2xx:成功--表示请求已被成功接收、理解、接受
- 3xx:重定向--要完成请求必须进行更进一步的操作
- 4xx:客户端错误--请求有语法错误或请求无法实现
- 5xx:服务器端错误--服务器未能实现合法的请求
- HTTP请求方法
- HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
- GET 请求指定的页面信息,并返回实体主体。
- HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
- POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
- PUT 从客户端向服务器传送的数据取代指定的文档的内容。
- HTTP工作原理
- 例如:在浏览器地址栏键入URL,按下回车之后会经历以下流程:
- 浏览器将该 html 文本并显示内容;
- 释放 TCP连接;
- 服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;
- 浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;
- 解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;
- 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;
- GET和POST请求的区别
- GET提交的数据会在地址栏中显示出来,而POST提交,地址栏不会改变
- 传输数据的大小
- 安全性,POST的安全性要比GET的安全性高。