Java网络编程——详解HTTP协议

http和https

http和https都是应用层协议
应用层的协议很多时候都需要来手动指定(自己定制协议),http是大佬们已经定义好的协议。(http协议简单,支持的扩展能力强,可以基于http进行自定制,节省开发成本 )
http协议基于TCP来实现
https 访问网站使用的协议类型。https(基于http实现的,只不过在http基础上引入一个加密层)

URL

网址,表示网络上的唯一一个资源的标识符
在这里插入图片描述
URL对应的path不同,获取到的页面也是不同的
URL中的服务器的ip来确定一个服务器
URL中的服务器端口来确定这个主机上的哪个进程
URL中的path来确定这个进程中所管理的哪个文件/资源

最终一次http请求得到的“网页”本质上是一个文件
在这里插入图片描述

urlencode和urldecode

urlencode
在这里插入图片描述
把url中包含的中文和特殊符号进行了转义,转义成%+十六进制数字形式
为啥要转义?
url中本身包含了一些特殊用途的符号.例如:/ &?# …这些特殊符号,不能在url的查询字符串中再出现(有可能导致浏览器解析出错)

urlencode的逆向操作urldecode
(url是http协议中的一个重要组成部分.但是url不是http的专属.可以搭配很多协议来使用)

HTTP协议内容

借助抓包工具(fidder)
在这里插入图片描述
fiddler界面上主要有三个部分
左侧:抓到的包的列表.选中你要查看某个包.
右上角:这个包的请求内容是啥.
右下角:这个包的响应内容是啥.

在这里插入图片描述
在这里插入图片描述
HTTP响应
在这里插入图片描述

HTTP方法

在这里插入图片描述

GET和POST区别

GET一般把数据放到url中
POST一般把数据放到body中

完全可以把GET的数据放到body中,也可以把POST的数据放到url中,只不过这样的用法很少见. (理论上完全可以)

在这里插入图片描述

状态码

在这里插入图片描述
在这里插入图片描述

HTTP中header

Content-Type: 数据类型(text/html等)
Content-Length: Body的长度
Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上;
User-Agent: 声明用户的操作系统和浏览器版本信息;
referer: 当前页面是从哪个页面跳转过来的;
location: 搭配3xx状态码使用, 告诉客户端接下来要去哪里访问;
Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能;
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/char_m/article/details/106970625