应用层常见的协议 HTTP协议
一. 如何查看我们的http 协议全部的内容有哪些呢?
一种合理的方法是 通过 wireshark 软件,找到想要查看的HTTP --->追踪流--->HTTP流 来查看
结果如下:红色部分 为 发送给服务器的,蓝色部分为服务器回给我的
POST /cloudquery.php HTTP/1.1
User-Agent: Post_Multipart
Host: qup.f.360.cn
Accept: */*
Pragma: no-cache
X-360-Cloud-Security-Desc: Scan Suspicious File
x-360-ver: 4
Content-Length: 978
Content-Type: multipart/form-data; boundary=----------------------------bd51e56c91b5
------------------------------bd51e56c91b5
Content-Disposition: form-data; name="m"
..@~.....
.X.!"J..v+2DmT.:p. ]X.....Y.....=*..
..J......L. d.........
P.~....AU......M+.Ht.{...H.A..L.$.@}..[...%R..MKa..X.....NA..fV.......l8.....P....|
.4..f]W.8wT..y.(.-Z....3..Um/...S.l....~....AO....*..N{.~..+..l....+.......
.Vg#.1.C..q._.w.n....;..Mz6._r.....[^E......c.huM..,../w{.,Fa$u.......4..9..q.3.n....*....|..f
>.......#4.6.Y.8.U.G.9.....}..3Y(r.....heq._....8z.p...Rm..E..;..N..s/.....4.u......Ynk.(..g..S@3..H....@.?#L..9MU\X......]..r...)....W...b.b..t.?.r J.>N.~..5@B.A.\...k.....1..t.....[.....Fts.............7?.*.k.>...j.K..7.*..w...0..S............. ......s..{..0W......i..mo.o..b..b.1Y..N_....If...e.Lb.;O.hp<....d..8].*.... .b..B...C..4...\......Q...... !..@K:_.>.".D...y...$t..y.".i)D._%..r.....`.../.+Z.@....t....#xn....!...;.........)w'.4..eHw.'b.5=..Mg.`.gdv.E.[....z:.].....3K.._..ggTZ...Kg_,*......\.........XL.
------------------------------bd51e56c91b5--
HTTP/1.1 200 OK
Server: nginx
Date: Sun, 11 Aug 2024 01:52:30 GMT
Content-Type: application/octet-stream
Transfer-Encoding: chunked
Connection: close
Cache-Control: no-cache
pragma: no-cache
...~.......P..h.t.y....w.J....G.
.!.j....OB.%.^.VLb.^2....:s...].?..=..]-..{...T$..'g.W.S.g2....<.R...S.....R.U.....T.T.........W.T.T.T...U.....R...U.W.....S.....W.W.S.....T.....W...T.........W.............R...............U.....T...W...........?.?.?.?...?.?.?.?.?.?.;.
get 请求
post 请求
二. HTTP 的报文格式
从上述也可以看到,如果是get 请求,则没有请求体
三. 更加详尽的HTTP 的报文格式。
1、实际上HTTP的报文格式是由 ABNF规定的。
具体要求如下:
也就是不管是 请求报文,或者 响应报文 都应该遵守上面的PPT
2. 请求行 和 状态行(状态行实际上就是返回行)
3. 请求头和请求体
4.URL的编码,如果有中文,空格,则会根据UTF-8进行编码
5. 使用Xshell 工具,在X sehll 中使用telnet,可以直接面向HTTP报文于服务器交互
先开始服务器,
然后执行下面的步骤
6.请求行中的 请求方法有哪些
7. 请求头字段
8.响应头字段
9.状态码
10. 这里为了后面更好的学习,学习一个前端的技术 form
11. 响应头中的 Access-Control-Allow-Origin 字段 和 请求头中的 Origin 字段
要明白这两个 是干啥的,首先要明白什么是 跨域。
我们以java web 前后端举例说明。
前端和后端的开发是需要分开的,因此目前在公司的开发模式是:
前端人员 将 html,js,css 写在一个服务器上,我们假设叫做 页面服务器(假设使用的服务器为nginx),地址为localhost:8080/
后端人员 将servlet ,java代码写在一个服务器上,我们假设叫做 后台服务器(假设使用的服务器是tomcat)地址为localhost:63342/
该项目的访问流程是:
先去 localhost:8080/ 拿到 html页面显示。
在html上有个 form表单,当user 填写了数据后,填写数据,然后发送给 localhost:63342/
如果在这个过程中,就涉及到了 两个服务器的交互,也就是说,涉及到了跨域访问的问题。
如果这个过程中有 异步的 AJAX 的请求,跨域 访问就会有问题。那么如何fix 这个问题呢?
在 java服务器端 设置 Access-Control-Allow-Origin 参数。
12 响应头中的 set-cookie 字段 和 请求头中的 cookie字段
cookie 和set-cookie 是为了解决 登陆后,不需要 账号密码就能访问 其他和该网址在同一服务器下的URL的问题
是一种会话跟踪技术