简单了解
HTTP:超文本传输协议
客户端和服务器通信的传输内容成为“报文”
HTTP就是通信规则,规定客户端发给服务器的报文格式“请求报文”
服务器发给客户端“响应报文”
客户端:建立连接_发送和请求信息
服务器:回应相应信息_关闭连接
报文格式
请求行
请求头
空行
请求体
Get请求
get 请求没有请求体,post才有请求体
测试HTTP协议
package main
import (
"fmt"
"net/http"
)
//创建处理器函数
func handler(w http.ResponseWriter, r *http.Request){
fmt.Fprintln(w,"测试HTTP协议")
}
func main() {
//调用处理器处理请求,调用handleFunc直接调用,用Handle还要结构体struct
http.HandleFunc("/http",handler)
//路由
http.ListenAndServe(":8080",nil)
}
这时候看报文
请求的地址,方式,状态200OK
看响应报文
请求行信息
GET /http HTTP/1.1 //请求行信息,请求行
//只有请求头以下
Host: localhost:8080 //地址
Connection: keep-alive
Cache-Control: max-age=0 //是否有缓存
sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="90", "Google Chrome";v="90"
sec-ch-ua-mobile: ?1
Upgrade-Insecure-Requests: 1
//用户信息 系统信息 版本多少位
User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.72 Mobile Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
post请求
创建index.html
提交表单
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form action="http://localhost:8080/http" method="POST">
用户名:<input type="text" name="username"><br/>
密码:<input type="password" name="password"><br/>
<input type="submit" />
</form>
</body>
</html>
提交了以后,可以看到post请求报文
POST /http HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Content-Length: 25
Cache-Control: max-age=0
sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="90", "Google Chrome";v="90"
sec-ch-ua-mobile: ?1
Upgrade-Insecure-Requests: 1
Origin: http://localhost
Content-Type: application/x-www-form-urlencoded //内容类型
User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.72 Mobile Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-site
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: http://localhost/
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
请求体是
响应报文
data 时间
length字节
type类型
时间差了8个小时,要加8个小时
响应体是这个文本
状态码
1xx 请求已被成功接收
2xx 请求已被成功接收
3xx 要完成请求要进行进一步的处理
4xx 客户端错误,请求有语法错误
5xx 服务端错误,服务器未能实现合法请求
200 成功
404 请求了不存在的资源
500 找到资源了,但是服务器内部出现错误
302 重定向,服务器要求浏览器重新发送请求,服务器响应头里会有location会有新的url地址