HTTP:全称“超文本传输协议”,它是一个应用层的协议,使用端口号80,关键要知道它是一个无状态的协议。
一、这个无状态怎么理解呢?
无状态就是后续处理消息,没有前面的消息。
二、如何解决:
1、cookie
2、session
cookie:
由服务器产生,浏览器收到请求后,保存在本地;浏览器下次请求服务器时,就是带上cookie,这样服务器就知道是谁来请求了,也就做到了有状态;由于cookie大小限制为4096字节,保存在客户端存在安全隐患,因此引入了session;
session:
与cookie的作用类似,只是存在了服务器端,更加的安全。
三、HTTP方法
GET:用户请求已经被URI识别的资源;
POST:将信息传输到服务器,主要功能与get类似,推荐使用post;
PUT:将文件发送到服务器;
HEAD:获得报文首部,与get方法类似,get获取内容,head获取首部;
DELETE:删除文件,与put相反
OPTIONS:查询URI支持的HTTP方法;
常见面试题:
get和post的区别:
1、get的重点是从服务器获取资源,post的重点是向服务器传输信息;
2、get的请求参数在url之后,用户可见,不安全,post的请求封装的http请求实体中,用户不可见,比较安全;
3、get传输的数据量比较小;post传输的数据量比较大;
4、get只支持ASCII字符集,传递中文会乱码;post支持标准字符集,可以正确传递中文。
四、常见的HTTP状态码
200:请求被正常处理;
204:请求被处理,但是没有资源可以返回;
206:客户端只是请求资源的一部分,服务器只对请求的部分资源执行GET 方法,相应报文中通过Content-Range指定范围的资源
301:永久重定向
302:临时重定向
400:请求报文语法错误,服务器无法识别
401:请求需要认证
403:请求对应的资源禁止被访问
404:服务器找不到请求的资源
500:服务器内部错误
503:服务器正忙
重点标粗
五、HTTP状态码中301和302的区别
302的意思是临时重定向:比如我这个网站临时维护(几个小时),需要用户跳转到另一个网站,使用302。
301的意思是永久重定向:比如我这个网址因为某种原因,以后再也不用了,那么使用301。
推荐使用301实现302的场景,因为302存在网址劫持的风险!