HTTP相关

HTTP和HTTPS的区别?

  • HTTP超文本传输协议,被用于在浏览器和网站服务器之间传递信息。HTTP以明文的方式发送内容,不提供任何方式的数据加密。因此不适合传递一些敏感信息,比如信用卡号、密码等支付信息。
  • 为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。为了数据的传递安全,HTTPS在HTTP的基础上,加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器的通信加密。

HTTPS和HTTP的区别主要如下:

  1. https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
  2. http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
  3. http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443
  4. http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

1.HTTP状态码知道哪些?
100  继续发送请求

2xx  成功
200 请求成功

3xx 代表要么有缓存,要么有重定向
301 被请求的资源已永久移动到新位置(永久重定向),浏览器会记住
302 临时重定向,浏览器不会记住,因为很可能会恢复
304 如果客户端发送了一个带条件的GET请求,且该请求已经被允许,而文档内容被没有改变,而文档的内容被没有改变,则服务器应当返回这个状态码
307 短暂的重定向

4xx 代表请求错误(应为一些原因,你要的资源不能给你)
400 1.表示请求语法错误,无法被服务器理解,除非进行修改,否则客户端不应该再次提交这个请求。2。请求的参数错误
401 当前请求需要用户验证(未授权)
403 服务器已经理解请求,但是拒绝执行它(并没有出错,服务器拒绝访问)
404 请求失败,你请求的资源,并没有在服务器上找到

5xx 服务器出错了
500 服务器端源码出现了错误
503 由于临时的服务器维护或过载,服务器当前无法处理请求,这个情况是暂时的,一段时间后会回复
504 网关超时
505 服务器不支持使用的HTTP版本


2. HTTP缓存怎么做?
Cache-Control:max-age=300
当浏览器第一次向服务器发送一个请求,想要获取a.jpg的时候,服务器会发送完整的文件并附带额外的信息。
这些外信息包括:
1、Etag是服务器对a.jpg文件进行的编码,如果a.jpg在服务器端未被修改,Etag值就不会发生变化。
2、Cache-Control:max-age=300  表示文件有效时间是300秒
3、expires:Tue, 26 Dec 2028 03:07:55 GMT  文件的过期时间
4、last-modified:Mon, 07 Nov 2016 07:51:11 GMT  文件在服务器端最后一次被修改的时间。

当response header中同时出现了 expires 和 Cache-Control时, Cache-Control优先级高于 expires

浏览器会把完整的啊a.jpg文件和这些额外信息存储到本地.
假如浏览器在300秒以内,再次需要获取 a.jpg。那么浏览器就直接从缓存中读取数据,获得a.jpg(也就是使用强缓存)。
假如浏览器在超过300秒后,再次需要获取a.jpg。那么就需要使用协商缓存。

先要判断是否有Etag/if-none-match字段。如果有。
浏览器重新发送请求的时候会带上 If-None-Match:字段。字段的内容就是服务器返回数据的时候附带的Etag字段。
服务器接受到请求后,会拿请求中的If-None-Match:字段和服务器端a.jpg重新计算后的Etag字段进行比较。如果相等,那么服务器就会返回304状态码。
如果不相等,服务器就会发送新文件和新的Etag给浏览器。浏览器则获取新文件并更新该文件的Etag
如果没有Etag/if-none-match字段,重新发送请求的时候会根据Last-Modified/If-Modified-Since 字段进行判断。
也就是在发送的请求中,带上If-Modified-Since字段,字段的值,是服务器之前返回数据的时候附带的Last-Modified字段值。
浏览器收到请求后,会对比请求中的If-Modified-Since字段和服务器端资源的Last-Modified字段值。
如果字段值相同。那么就返回304状态码,告诉浏览器使用缓存。
如果不同,就返回被改动后的资源和最新的改动时间。


3.Cache-Control 和 Etag的区别是什么?

Cache-Control用来定义文件的缓存规则。
常见的值有
max-age=xxx 缓存的内容将在 xxx秒后失效
private 客户端可以缓存
public 客户端和代理服务器都可以缓存
no-cache 使用Etag/If-None-Match来验证缓存数据。
no-store 所有内容都不会缓存,强缓存和协商缓存都不会触发。浏览器会直接向服务器请求原始文件,并且请求中不带Etag字段。

Etag 当前资源在服务器的唯一标识(这个唯一标识的生成规则由服务器决定)

4. Cookie 和 Session 是什么?

HTTP是一种无状态的协议,一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的链接。好比我们登录淘宝网站,当我们打开网站不同页面的时候,服务器无法识别是同一个用户打开的,也就意味着,每打开一个网页,就需要重新登录一次。
Cookie和Session 就是为了解决这个问题而提出来的两个机制。

Cookie是服务器在本地机器上存储的小段文本。是客户端保持用户状态的机制
客户端向服务器发起请求的时候,如果服务器需要记录该用户的状态,就使用response向客户端浏览器颁发一个Cookie。
客户端浏览器会把这个Cookie保存起来,当浏览器再次请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。
服务器接受到请求后,检测该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。


image.png
  • Cookie的主要内容包括:名字,值,过期时间,路径和域。
    路径和域一起构成了Cookie的作用范围。

若不设置过期时间
则表示这个Cookie的生命周期为浏览器回话期间,关闭浏览器窗口,Cookie就消失。这种生命周期为浏览器会话期的Cookie,叫做session Cookie(会话Cookie).
会话Cookie一般不存储在硬盘上而是保存在内存里,当然这种行为并不是规范规定的。

若设置了过期时间
浏览器会把Cookie保存在硬盘上,关闭后再次打开浏览器,这些Cookie仍然有效直到超过设定的过期时间,存储在硬盘上的Cookie,可以在不同的浏览器进程间共享。比如两个IE窗口。这种Cookie,叫做 Persistent Cookie(持续的Cookie)

  • Cookie的删除和修改
    修改:只需要新建一个同名的Cookie,添加到response中覆盖原来的Cookie。
    删除:只需要新建一个同名的Cookie,并将maxAge设置为0,并添加到response中覆盖原来的Cookie
Session

Session是在服务器端记录客户状态的机制。它与Cookie的区别是,Session保存在服务器端,而Cookie保存在客户端。
客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上,这就是Session。

当浏览器第一次发送请求的时候,服务器自动生成了---HashTable和Session Id来唯一标识这个HashTable,并将其通过响应发送到浏览器。
浏览器第二次发送请求,会将前一次服务器响应中的Session Id放在请求中,一并发送到服务器上,服务器从请求中提取Session Id,并和保存的所有 Session Id进行对比。找到这个用户对应的 HashTable

详细的过程:创建Session后,会把关联的Session Id通过setCookie添加到HTTP响应头中。
浏览器在加载页面时,发现响应头中有set-cookie字段,就把这个cookie种到浏览器指定域名下。
当下次刷新页面时,发送的请求会带上这条cookie,服务端在接受到后,根据这个session_id来来识别用户。

Cookie和Session的区别
1. cookie数据存放在客户端浏览器上,而session数据存放在服务器
2. 单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie,session;而session存储的大小理论上没有限制。
3. cookie不安全,别人可以分析存放在本地的cookie,并进行cookie欺骗。考虑到安全,应该使用session
4. session会一定时间内保存在服务器上,当访问增多,会比较占用服务器性能,考虑到减轻服务器压力,可以使用cookie
5. 建议 将登陆信息等重要信息存放为session,其他信息可以存放为cookie
单点登录中,cookie 被禁用了怎么办?(一点登陆,子网站其他系统不用再登陆)
  • 单点登录的原理是后端生成一个 session ID,设置到 cookie,后面所有请求浏览器都会带上cookie,然后服务端从cookie获取 session ID,查询到用户信息。
  • 所以,保持登录的关键不是cookie,而是通过cookie 保存和传输的 session ID,本质是能获取用户信息的数据。
  • 除了cookie,还常用 HTTP 请求头来传输。但这个请求头浏览器不会像cookie一样自动携带,需手工处理
4. LocalStorage和Cookie的区别

在HTML5中,新加入了一个localStorage特性,主要用来作为本地存储来使用,它解决了Cookie存储空间不足的问题。

  1. LocalStorage中,一般浏览器支持的是5m大小,Cookie是4k
  2. Cookie会随请求被发送到服务器上,而LocalStorage不会

5. GET和POST的区别?

1、 GET请求把参数包含在URL中,而POST请求通过request body 传递参数。
2、 GET请求在URL中传递的参数是有长度限制的,大小不能超过1024字节,而POST没有。
3、 GET比POST更不安全,因为把参数直接暴露在URL中,所以不能用来传递敏感信息。
4、GE用来请求数据,而POST用来写数据。post不幂等(幂等的意思,不管发生多少次请求,结果都一样)
5、 GET请求参数会被完整保存在浏览器历史记录里,而POST中的参数不会被保留

  1. GET和POST本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。
  2. GET请求产生一个TCP数据包,而POST产生两个TCP数据包。
    长的说对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
    而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

从输入url到页面加载完成发生了什么?

1、浏览器的地址栏输入URL并按下回车。

2、浏览器查找当前URL是否存在缓存,并比较缓存是否过期。

3、DNS解析URL对应的IP。

4、根据IP建立TCP连接(三次握手)。

5、HTTP发起请求。

6、服务器处理请求,浏览器接收HTTP响应。

7、渲染页面,构建DOM树。

8、关闭TCP连接(四次挥手)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容

  • http协议有http0.9,http1.0,http1.1和http2三个版本,但是现在浏览器使用的是htt...
    一现_阅读 1,855评论 0 3
  • HTTP协议 在 OSI 七层模型中,HTTP协议位于最顶层的应用层中。通过浏览器访问网页就直接使用了 HTTP ...
    chesapeake阅读 240评论 0 0
  • 原文地址 HTTP协议 在 OSI 七层模型中,HTTP协议位于最顶层的应用层中。通过浏览器访问网页就直接使用了 ...
    gyl_coder阅读 425评论 0 0
  • 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Se...
    chinariver阅读 5,599评论 1 49
  • http的特点 http是由浏览器通过url向web服务器发送请求,再通过web服务器向客户端发送响应信息。 简单...
    云鲸鱼rain阅读 748评论 0 0