✨哈喽,进来的小伙伴们,你们好耶!✨
🛰️🛰️系列专栏:【JavaEE】
✈️✈️本篇内容:http请求的方法、报头;状态码!
🚀🚀代码存放仓库gitee:JavaEE代码!
⛵⛵作者简介:一名双非本科大三在读的科班Java编程小白,道阻且长,星夜启程!
继上篇博客,我们已经了解到什么是http协议,以及http协议格式,http请求中的URL;本票博客我们继续学习http的后序内容。
目录
http中请求的方法;
1. GET 方法
2、认识报头(header)
3、User-Agent
4、Referer
http响应;
1、200 OK
2、404 Not Found
3、403 Forbidden
4、405 Method Not Allowed
5、500 Internal Server Error
6、504 Gateway Timeout
7、302 Move temporarily
http中请求的方法;
http中的方法非常多,其中最常用的就是get/post方法,也是我们本篇博客需要讲解的内容!
注:http中引入这些方法的初衷就是为了表示不同的语义,但是理想很丰满,现实很骨感,随着人们的使用,现在大家写代码基本就是get/post混合随便使用,正因为这样,这些方法之间的界限也就变得不那么明显了。
首先:get/post没有本质区别!具体来说就是能使用get的场景也能使用post;能使用post的场景也能使用get;
1、语义上的区别
get通常用来取数据;post通常用来上传数据;
2、是否有body
通常情况下:get是没有body的,get通过query string向服务器传递数据;post是有body的,post通过body向服务器传递数据,但是post没有query string;
3、是否幂等
get一般请求是幂等的,post一般是不幂等的。(幂等是指每次你相同的输入,输出结果是确定的)
4、get可以被缓存,post不能被缓存;
1. GET 方法
2、认识报头(header)
补充知识:因为http也是基于tcp的协议;tcp是一个面向字节流的协议,合理的设计应用层的协议,有利于明确包 和 包之间的边界(粘包问题)。
3、User-Agent
解释:
Mozilla是开发Firefox的组织;Windows NT 10.0表示操作系统是win10;x64表示64位操作系统;
Chrome->浏览器;
那么UA现在最大的作用就是区别屏幕的尺寸和比例;比如我们使用的手机和电脑,屏幕比例不同,页面布局就得不同;服务器就可以根据UA来区分当前是手机还是电脑;
4、Referer
表示了当前的页面是从哪个页面跳转而来的;
注意referer不一定有,当你在浏览器直接输入地址的时候,或者直接从收藏夹点击过来,这个时候就没有referer;
step1:假如我们在百度搜索牙疼;
step2:我们选择一个链接点进去;
通过fiddler抓包可以看到这里会显示referer的信息;
5、cookie
在讲cookie之前,大家需要知道浏览器为了安全,默认情况下不让js访问到用户电脑上的文件系统的,假如某个恶意网站你不小心一点,就可能会触发恶意代码,把你电脑上的很多文件都给删除不见了;
但是这样的限制又有点问题,有时候确实需要让这个页面来持久化存储一些用户的信息,方便后续访问;
那么如何解决呢?
虽然不能让页面的js访问你整个磁盘的数据,但是可以给浏览器单独分配一个空间,用来存储相关信息,这样就可以让js随便访问这个空间;这个空间有很多种形式,其中最经典的就是cookie;
定义:cookie就是浏览器给页面提供的一种能持久化存储数据的机制。(持久化指的是数据不会因为程序重启而丢失)
cookie的组织形式:
1、先按照域名来组织,针对每个域名,分别分配一个小房间;假如我访问gitee,浏览器就会给gitee记录一组cookie;
2、每个小房间里面又会按照键值对的方式来组织数据;
如何查看cookie?
step1:点击浏览器栏上有个小锁;可以看到cookie这个选项;
step2:点击进去便可看到浏览器给gitee记录的一组cookie;
可以看到包含了一组这样的 header;就是服务器完成身份认证之后,就给客户端返回了一些具体的信息;信息就是通过 Set-Cookie 这样的 响应报头 来表示的;
http响应;
状态码:表示这次请求是成功还是失败,以及失败的原因是什么;
1、200 OK
2、404 Not Found
那么这个路径肯定是不存在的,就会出现404的情况;
3、403 Forbidden
4、405 Method Not Allowed
5、500 Internal Server Error
6、504 Gateway Timeout
7、302 Move temporarily
注:这个词在我们以后的学习过程中很多场景都会涉及到,不仅仅是http,不同的场景细节上有所差异,但表示的核心含义都是呼叫转移;
小技巧:
http状态码这么多,我们不需要全部记住,只需要记住几个常见的状态码即可!
2开头,都属于成功;
3开头都属于重定向;
4开头都属于客户端出现错误;
5开头都属于服务器出现错误;
OK,那么本篇博客的内容就到这里啦,我们下期再见!!