关于http

一.关于http的面试题:

1.脱口秀http的特点

1.get和post的区别,http的方法都有哪些?

2.http的缓存机制

3.各个状态码的含义

4.请求包&响应包里包含什么?

5.在浏览器输入url之后到页面中看到结果的全过程是怎么样的

开始进入正式课题!

一.http协议的优点:

1.HTTP使用的是可靠的数据传输协议(底层是tcp协议,确保顺序内容的正确,确保没有丢包),因此即使数据来自地球的另一端, 它也能够确保数据在传输的过程中不会被损坏或产生混乱。这样,用户在访问信息时就不用担心其完整性了,因此对用户来说,这是件好事。

2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、PUT、DELETE、 POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得 HTTP服务器的程序规模小,因而通信速度很快。

3.灵活: HTTP允许传输任意类型的数据对象。

4.Http协议的无状态性:http是一种不保存状态, 即无状态协议。HTTP协议自身不对请求和响应之间的通信状态进行保存。对发送过的请求和响应都不做持久化处理(即不做任何保存)。

在这里插入图片描述

一个完整的http请求主要有六个步骤:
1.域名解析
2.发起TCP的3次握手
3.建立TCP连接后发起http请求
4.服务器端响应http请求,浏览器得到html代码
5.浏览器解析html代码,并请求html代码中的资源
6.浏览器对页面进行渲染呈现给用户。

二.http与https的区别:

HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

HTTPS和HTTP的区别主要如下:

1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

三、Cookie和Session的用处、区别和联系

http是无状态协议,–服务器不记录谁访问过它,减少服务器的压力(减少维护信息)
那么服务端如何识别特定的客户端呢?
1.每次http请求的时候,客户端都会发送相应的cookie信息到服务端
2.实际上大多数应用都是用cookie来实现session跟踪的,第一次创建session的时候, 服务端会在http协议中告诉客服端,需要在cookie里记录一个sessionid,以后每次请求把这个id发送到服务器,我就知道你是谁了
3.如果客户端禁用cookie怎么办? -般这种情况下,会使用- -种叫做url重写的技术来进行会话跟踪,即每次http交互,url后面都会被附加上一个诸如sid= **的参数,服务端据此来识别用户。

在这里插入图片描述

虽然 Cookie 和 Session 都可以跟踪客户端的访问记录,但是它们的工作方式显然是不同的,Cookie 通过把所有要保存的数据通过 HTTP 协议的头部从客户端传递到服务端,又从服务端再传回到客户端,所有的数据都存储在客户端的浏览器里,所以这些 Cookie 数据可以被访问到,就像我们前面通过 Firefox 的插件 HttpFox 可以看到所有的 Cookie 值。不仅可以查看 Cookie,甚至可以通过 Firecookie 插件添加、修改 Cookie,所以 Cookie 的安全性受到了很大的挑战。

相比较而言 Session 的安全性要高很多,因为 Session 是将数据保存在服务端,只是通过 Cookie 传递一个 SessionID 而已,所以 Session 更适合存储用户隐私和重要的数据。

Cookie与Session都能够进行会话跟踪,但是完成的原理不太一样。普通状况下二者均能够满足需求,但有时分不能够运用Cookie,有时分不能够运用Session。下面经过比拟阐明二者的特性以及适用的场所。

1 .存取方式的不同

Cookie中只能保管ASCII字符串,假如需求存取Unicode字符或者二进制数据,需求先进行编码。Cookie中也不能直接存取Java对象。若要存储略微复杂的信息,运用Cookie是比拟艰难的。

而Session中能够存取任何类型的数据,包括而不限于String、Integer、List、Map等。Session中也能够直接保管Java Bean乃至任何Java类,对象等,运用起来十分便当。能够把Session看做是一个Java容器类。

2 .隐私策略的不同

Cookie存储在客户端阅读器中,对客户端是可见的,客户端的一些程序可能会窥探、复制以至修正Cookie中的内容。而Session存储在服务器上,对客户端是透明的,不存在敏感信息泄露的风险。

假如选用Cookie,比较好的方法是,敏感的信息如账号密码等尽量不要写到Cookie中。最好是像Google、Baidu那样将Cookie信息加密,提交到服务器后再进行解密,保证Cookie中的信息只要本人能读得懂。而假如选择Session就省事多了,反正是放在服务器上,Session里任何隐私都能够有效的保护。

3.有效期上的不同

使用过Google的人都晓得,假如登录过Google,则Google的登录信息长期有效。用户不用每次访问都重新登录,Google会持久地记载该用户的登录信息。要到达这种效果,运用Cookie会是比较好的选择。只需要设置Cookie的过期时间属性为一个很大很大的数字。

由于Session依赖于名为JSESSIONID的Cookie,而Cookie JSESSIONID的过期时间默许为–1,只需关闭了阅读器该Session就会失效,因而Session不能完成信息永世有效的效果。运用URL地址重写也不能完成。而且假如设置Session的超时时间过长,服务器累计的Session就会越多,越容易招致内存溢出。

4.服务器压力的不同

Session是保管在服务器端的,每个用户都会产生一个Session。假如并发访问的用户十分多,会产生十分多的Session,耗费大量的内存。因而像Google、Baidu、Sina这样并发访问量极高的网站,是不太可能运用Session来追踪客户会话的。

而Cookie保管在客户端,不占用服务器资源。假如并发阅读的用户十分多,Cookie是很好的选择。关于Google、Baidu、Sina来说,Cookie或许是唯一的选择。

5 .浏览器支持的不同

Cookie是需要客户端浏览器支持的。假如客户端禁用了Cookie,或者不支持Cookie,则会话跟踪会失效。关于WAP上的应用,常规的Cookie就派不上用场了。

假如客户端浏览器不支持Cookie,需要运用Session以及URL地址重写。需要注意的是一切的用到Session程序的URL都要进行URL地址重写,否则Session会话跟踪还会失效。关于WAP应用来说,Session+URL地址重写或许是它唯一的选择。

假如客户端支持Cookie,则Cookie既能够设为本浏览器窗口以及子窗口内有效(把过期时间设为–1),也能够设为一切阅读器窗口内有效(把过期时间设为某个大于0的整数)。但Session只能在本阅读器窗口以及其子窗口内有效。假如两个浏览器窗口互不相干,它们将运用两个不同的Session。(IE8下不同窗口Session相干)

6.跨域支持上的不同

Cookie可以通过如下方式实现跨域名访问,例如将domain属性设置为“.xxx.com”,则“a.xxx.com”和“b.xxx.com”均能够访问该Cookie。事实上只要是以”.xxx.com”结尾的域名均可访问。跨域名Cookie如今被普遍用在网络中,例如Google、Baidu、Sina等。而Session则不会支持跨域名访问。Session仅在他所在的域名内有效。

仅运用Cookie或者仅运用Session可能完成不了理想的效果。这时应该尝试一下同时运用Cookie与Session。Cookie与Session的搭配运用在实践项目中会完成很多意想不到的效果

四、方法

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

五、报文

➢HTTP报文是由一-行一行的简单字符串组成的。
➢HTTP报文都是纯文本,不是二进制代码,所以人们可以很方便地对其进行读写。
➢从Web客户端发往Web服务器的HTTP报文称为请求报文(request message)
➢从服务器发往客户端的报文称为响应报文(response message)。

a) 请求报文 (b) 响应报文
GET /test/hi-there.txt HTTP/1.0 起始行 | HTTP/1.0 200 OK
Accept: text/* Content- type: text/plain
Accept-Language: en,fr 首部 Content- length: 19
主体 Hi! I’m a message!

HTTP报文的组成
1.起始行报文的第一 行就是起始行,在请求报文中用来说明要做些什么,在响应报文中说明出现了什么情况。
2.首部字段(header)起始行后面有零个或多个首部字段。每个首部字段都包含一个名字和一个值,为了便于解析,两者之间用冒号:来分隔。首部以一个空行结束。添加一个首部字段和添加新行一样简单。
3.主体(body)空行之后就是可选的报文主体了,其中包含了所有类型的数据。请求主体中包括了要发送
给Web服务器的数据;响应主体中装载了要返回给客户端的数据。起始行和首部都是文本形式且都是结
构化的,而主体则不同,主体中可以包含任意的二进制数据(比如图片、视频、音轨、软件程序)。当
然,主体中也可以包含文本。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值