HTTP解析解析
HTTP(Hyper Text Transfer Protocol)即超文本传输协议,是一种详细规定了浏览器和万维网服务器之间相互通信的规则,它是万维网交换信息的基础,允许将HTML文档从web服务器送到web浏览器。
发起HTTP请求
URL(统一资源定位符)也被成为网页地址,是互联网标准的地址。URL格式如下:
协议://服务器IP[:端口]/路径/[?查询]
例如:
http://www.xsser.com/post/httpxiey.html 就是一个标准的URL
发起方式:
1.借助浏览器发送
2.在linux系统中使用curl命令
HTTP协议详解
HTTP协议是一种无状态的协议。无状态是指web浏览器与web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器发出请求,然后web服务端返回响应(Response),连接就关闭了,在服务器上不保留连接的有关信息。也就是说,HTTP请求只能由客户端发起,而服务端不能主动向客户端发起。
1.HTTP请求与响应
(1)HTTP请求
HTTP由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成
POST /login/php HTTP/1.1 //请求行
HOST: www.baidu.com //请求头
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3100.0 Safari/537.36
//请求空行
username=admin&password=admin //请求正文
User-Agent:浏览器标识,允许客户端将它的操作系统、浏览器和其它属性告诉服务器。
(2)HTTP响应
与HTTP请求相对应,分别是响应行,响应头和响应正文
HTTP/1.1 200 OK 状态行
Date: Sun, 17 Mar 2013 08:12:54 GMT 响应头部
Server: Apache/2.2.8 (Win32) PHP/5.2.5
X-Powered-By: PHP/5.2.5
Set-Cookie: PHPSESSID=c0huq7pdkmm5gg6osoe3mgjmm3; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 4393
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=utf-8
空行
<html> 响应数据
<head>
<title>HTTP响应示例<title>
</head>
<body>
Hello HTTP!
</body>
</html>
2.HTTP请求方法
GET
GET方法请求一个指定资源的表示形式,使用GET的请求应该只被用于获取数据。
HEAD
HEAD方法请求一个与GET请求的响应相同的响应,但没有响应体。
POST
POST方法用于将实体提交到指定的资源,通常导致在服务器上的状态变化或副作用。
PUT
PUT方法用请求有效载荷替换目标资源的所有当前表示。
DELETE
DELETE方法删除指定的资源。
CONNECT
CONNECT方法建立一个到由目标资源标识的服务器的隧道。
OPTIONS
OPTIONS方法用于描述目标资源的通信选项。
TRACE
TRACE方法沿着到目标资源的路径执行一个消息环回测试。
PATCH
PATCH方法用于对资源应用部分修改。
详细请见:https://www.cnblogs.com/phpper/p/9127553.html
3.HTTP状态码
1** 信息,服务器收到请求,需要请求者继续执行操作,范围:100-101
2** 成功,操作被成功接收并处理 范围:200-206
3** 重定向,需要进一步的操作以完成请求 范围:300-305
4** 客户端错误,请求包含语法错误或无法完成请求,范围:400-415
5** 服务器错误,服务器在处理请求的过程中发生了错误,范围:500-505
常见状态码描述如下
200 OK 请求成功。一般用于GET与POST请求
302 Found 重定向。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
400 Bad Request 客户端请求的语法错误,服务器无法理解
401 Unauthorized 请求要求用户的身份认证,未授权
403 Forbidden 服务器理解请求客户端的请求,但是拒绝执行此请求
404 Not Found 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
500 Internal Server Error 服务器内部错误,无法完成请求
503 Service Unavailable 由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中
4.HTTP消息
(1)请求头
请求头只出现在HTTP请求中,请求报头允许客户端向服务器传递请求的附加信息和客户端自身的信息。常用的HTTP请求头如下:
1.Host:请求的服务器主机名和端口
2.User-Agent:浏览器通知服务器,客户端浏览器与操作系统相关信息
3.Referer:浏览器通知服务器,当前请求来自何处。如果是直接访问,则不会有这个头。常用于:防盗链
4.Cookie:与会话有关技术,用于存放浏览器缓存的cookie信息。
5.Range:可以请求实体的部分内容,多线程下载一定会用到此请求同
6.X-Forward-For:代表请求端的IP可以有多个用逗号分开
7.Accept:浏览器可支持的MIME类型。文件类型的一种描述方式。
例如:
text/html ,html文件
text/css,css文件
image/*,所有图片文件
8.Accept-Encoding:浏览器通知服务器,浏览器支持的数据压缩格式。如:GZIP压缩
(2)响应头
Location:指定响应的路径,需要与状态码302配合使用,完成跳转。
Content-Type:响应正文的类型(MIME类型)
取值:text/html;charset=UTF-8
Content-Disposition:通过浏览器以下载方式解析正文
取值:attachment;filename=xx.zip
Set-Cookie:与会话相关技术。服务器向浏览器写入cookie
Content-Encoding:服务器使用的压缩格式
取值:gzip
Content-length:响应正文的长度
Refresh:定时刷新,格式:秒数;url=路径。url可省略,默认值为当前页。
取值:3;url=www.itcast.cn //三秒刷新页面到www.itcast.cn
Server:指的是服务器名称,默认值:Apache-Coyote/1.1。可以通过conf/server.xml配置进行修改。<Connector port="8080" ... server="itcast"/>
Last-Modified:服务器通知浏览器,文件的最后修改时间。与If-Modified-Since一起使用
一次完整的HTTP请求所经历的7个步骤:
https://blog.csdn.net/chen1403876161/article/details/51546653
1. 建立TCP连接
2. Web浏览器向Web服务器发送请求命令
3. Web浏览器发送请求头信息
4. Web服务器应答
5. Web服务器发送应答头信息
6. Web服务器向浏览器发送数据
7. Web服务器关闭TCP连接
TCP三次握手与四次挥手
包括常见问题
https://blog.csdn.net/qq_38950316/article/details/81087809
https://javastack.blog.csdn.net/article/details/89391711
HTTP与HTTPS的区别
1.HTTP是超文本传输协议,信息是明文传输;HTTPS则是具有安全性的SSL加密传输协议。
2.HTTP与HTTPS协议使用的是完全不相同的连接放肆,HTTP端口为80,HTTPS为443
3.HTTPS协议需要到CA申请证书,HTTP不需要
4.HTTP连接简单,是无状态连接;而HTTPS协议是由HTTP+SSL协议构建的可进行加密传输、身份认证的网络协议,相对来说比HTTP安全
HTTPS详细介绍
https://ld246.com/article/1539684618126
https://www.pianshen.com/article/357592415/