http 常见的一些问题点的总结

1. URL详解

  1. url(Uniform Resource Locator)地址用于描述一个网络上的资源,基本的格式如下:

    scheme://host[:port#]/path/.../[;url-parms][?query-string][#anchor]
    
    • scheme指定底层使用的协议(例如:ftp,https)
    • host HTTP服务器的IP地址或者域名
    • port#HTTP服务器默认的端口是80,这种情况下端口号可以省略。如果使用了别的端口必须指定
    • path访问资源的路径
    • url-params
    • query-strring发送给服务器的数据
    • anchor-锚
  2. 理解url和urn以及uri的区别

    1. uri是统一资源定位符,包含了url和urn
    2. url是一个地址,某个对象的地址
    3. urn是一个唯一表示符,通过找个也可以找到资源;

2、 Http的头域理解

1.请求头域的相关知识点
  1. If-Modified-Since 把浏览器缓存页面的最后修改时间发送到服务器,服务器会把这个时间与服务器上的最后修改时间做对比,若一致返回304,不一致,则返回200,外加文件新的内容,收到之后就会缓存加显示
  2. If-None-Match:If-None-Match和ETag一起工作,主要的原理就是Http Resourcre里面加入ETag信息,当用户在此请求资源的时,姜在request中加入If-None-Match信息(也就是ETag值),服务器验证资源的ETag有没有改变,若改变了返回200外加资源,没有则返回304
  3. Pragma :指定no-cache值表示服务器必须返回一个刷新后的文档和Cache-Control中的no-cache一样
  4. Cache-Control:指定请求和相应遵循的缓存机制,缓存指令是单向的且是独立的;请求时的缓存指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached,响应消息中的指令包括public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age、s-maxage。
    1. Cache-Control:Public 可以被任何缓存所缓存
    2. Cache-Control:Private 内容只缓存到私有缓存中
    3. Cache-Control:no-cache 所有内容都不会被缓存
    4. Cache-Control:no-store 用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。
    5. Cache-Control:max-age 指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。
    6. Cache-Control:min-fresh 指示客户机可以接收响应时间小于当前时间加上指定时间的响应
    7. Cache-Control:max-stale 指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。
  5. Accept:浏览器端可以接受的MIME类型。如:Accept:text/html Accept: text/html 代表浏览器可以接受服务器回发的类型为 text/html 也就是我们常说的html文档,如果服务器无法返回text/html类型的数据,服务器应该返回一个406错误(non acceptable)。通配符 * 代表任意类型,例如 Accept: / 代表浏览器可以处理所有类型,(一般浏览器发给服务器都是发这个)。
  6. Accept-Encoding:浏览器申明自己可接受的编码方法,通常指定的压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate);如果请求消息中没有设置这个域,服务器假定客户端对各种内容的编码都可以接受
  7. Accept-Language:浏览器申明自己接受的语言,语言和字符集的区别:中文是语言,中文有多种字符集比如gbk,gb2312等;例如:Accept-Language: en-us。如果请求消息中没有设置这个报头域,服务器假定客户端对各种语言都可以接受。
  8. Accept-charset:浏览器可接受的字符集。如果在请求消息中没有设置这个域,缺省表示任何字符集都可以接受。
  9. User-Agent:告诉HTTP服务器,客户端使用的操作系统和浏览器的名称和版本
  10. Content-Type:如:Content-Type:application\x-www-form-urlencoded
  11. Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。提供了Request的上下文信息的服务器,告诉服务器我是从哪个链接过来的,比如从我主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。
  12. Connection:例如:Connection: keep-alive 当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。HTTP 1.1默认进行持久连接。利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。要实现这一点,Servlet需要在应答中发送一个Content-Length头,最简单的实现方法是:先把内容写入ByteArrayOutputStream,然后在正式写出内容之前计算它的大小。Connection: close 代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭,当客户端再次发送Request,需要重新建立TCP连接。
  13. Host:主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的。HTTP/1.1请求必须包含主机头域,否则系统会以400状态码返回。
  14. Cookie:最重要的请求头之一, 将cookie的值发送给HTTP服务器。
  15. Content-Lenth:表示请求消息正文的长度。例如:Content-Length: 38。
  16. Authorization:授权信息通常出现在对服务器发送的WWW-Authenticate头的应答中。主要用于证明客户端有权查看某个资源。当浏览器访问一个页面时,如果收到服务器的响应代码为401(未授权),可以发送一个包含Authorization请求报头域的请求,要求服务器对其进行验证。
    UA-Pixels,UA-Color,UA-OS,UA-CPU:由某些版本的IE浏览器所发送的非标准的请求头,表示屏幕大小、颜色深度、操作系统和CPU类型。
  17. Range:可以请求实体的一个或者多个子范围
2.响应头域
  1. Allow:服务器支持那些请求的方法;
  2. Date:表示消息发送的时间
  3. Expires:指明应该在什么时候认为文档已经过期,从而不在缓存它,要从服务器上获取,更新缓存,过期之前使用本地缓存,HTTP1.1的客户端和缓存会姜非法的日期格式看做已经过期;eg:为了让浏览器不要缓存页面,我们也可以将Expires实体报头域,设置为0。例如: Expires: Tue, 08 Feb 2022 11:35:14 GMT
  4. P3P:用于跨域设置Cookie,这样可以解决iframe跨域访问cookie的问题;
  5. set-Cookie:非常重要的header,用于把从cookie发送到客户端浏览器,每一个写入cookie都会生成一个set-Cookie;例如: Set-Cookie: sc=4c31523a; path=/; domain=.acookie.taobao.com
  6. ETag:和If-None-Match 配合使用。
  7. Last-Modified:用于指示资源的最后修改日期和时间。Last-Modified也可用setDateHeader方法来设置。
  8. Content-Type:WEB服务器告诉浏览器自己响应的对象的类型和字符集。Servlet默认为text/plain,但通常需要显式地指定为text/html。由于经常要设置Content-Type,因此HttpServletResponse提供了一个专用的方法setContentType。可在web.xml文件中配置扩展名和MIME类型的对应关系。
  9. Content-Range:用于指定整个实体中的一部分的插入位置,他也指示了整个实体的长度。在服务器向客户返回一个部分响应,它必须描述响应覆盖的范围和整个实体长度。一般格式:Content-Range:bytes-unitSPfirst-byte-pos-last-byte-pos/entity-length。
    例如,传送头500个字节次字段的形式:Content-Range:bytes0-499/1234如果一个http消息包含此节(例如,对范围请求的响 应或对一系列范围的重叠请求),Content-Range表示传送的范围。
  10. Content-Length:指明实体正文的长度,以字节方式存储的十进制数字来表示。在数据下行的过程中,Content-Length的方式要预先在服务器中缓存所有数据,然后所有数据再一股脑儿地发给客户端。只有当浏览器使用持久HTTP连接时才需要这个数据。
  11. Content-Encoding:WEB服务器表明自己使用了什么压缩方法(gzip,deflate)压缩响应中的对象。只有在解码之后才可以得到Content-Type头指定的内容类型。利用gzip压缩文档能够显著地减少HTML文档的下载时间。
  12. Content-Language:WEB服务器告诉浏览器自己响应的对象所用的自然语言。例如: Content-Language:da。没有设置该域则认为实体内容将提供给所有的语言阅读。
  13. Server:指明Http服务器用来处理请求的软件信息;例如:Server: Microsoft-IIS/7.5、Server:Apache-Coyote/1.1。此域能包含多个产品标识和注释,产品标识一般按照重要性排序。
  14. Connection:例如:Connection: keep-alive 当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。
    Connection: close 代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭,当客户端再次发送Request,需要重新建立TCP连接。
  15. Location:用于重定向一个新的位置,包含新的URL地址。表示客户应当到哪里去提取文档。Location通常不是直接设置的,而是通过HttpServletResponse的sendRedirect方法,该方法同时设置状态代码为302。Location响应报头域常用在更换域名的时候。
  16. Refresh:表示浏览器应该在多少时间之后刷新文档,以秒计
  17. WWW-Authenticate:该响应报头域必须被包含在401(未授权的)响应消息中,客户端收到401响应消息时候,并发送Authorization报头域请求服务器对其进行验证时,服务端响应报头就包含该报头域。

3、 缓存的实现原理

  1. 实现原理:缓存会根据请求保存输出内容的副本,当下一个请求来的时候若是同URL,缓存直接使用副本响应访问请求而不用向源服务器再次发送请求;
  2. 客户端缓存生效的常见流程:服务器收到请求时,会在200OK中回送该资源的Last-Modified和ETag头,客户端将该资源保存在cache中,并记录这两个属性,当客户端需要发送相同请求的时候,会在请求中携带If-Modified-since和If-None-Match两个头,两个头分别响应中的Last-Modified和ETag的值,服务器通过这两个值判断本地资源未发生变化,客户端不需要下载返回304;
  3. 缓存机制
    1. Freshness:允许一个回应消息可以在源服务器不被重新检查,并且可以由服务器和客户端来控制。例如,Expires回应头给了一个文档不可用的时间。Cache-Control中的max-age标识指明了缓存的最长时间;
    2. Validation:用来检查以一个缓存的回应是否仍然可用。例如,如果一个回应有一个Last-Modified回应头,缓存能够使用If-Modified-Since来判断是否已改变,以便判断根据情况发送请求;
    3. Invalidation:在另一个请求通过缓存的时候,常常有一个副作用。例如,如果一个URL关联到一个缓存回应,但是其后跟着POST、PUT和DELETE的请求的话,缓存就会过期。

4. cookie和session的保持状态

  1. 通过cookie保存状态信息;通过cookie服务器就可以清楚的知道两个请求是否来自于同一个客户端;
  2. 通过session保存状态信息
    1. session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构来保存信息,
    2. 服务器给每个Session分配一个唯一的JSESSIONID,并通Cookie发送给客户端。当客户端发起新的请求的时候,将在Cookie头中携带这个JSESSIONID。这样服务器能够找到这个客户端对应的Session。

5. 多线程下载的原理

  1. 下载工具开启多个发出HTTP请求的线程;每个http请求只请求资源文件的一部分:Content-Range: bytes 20000-40000/47000;合并每个线程下载的文件

6. http代理以及隧道、geteway的理解

  1. http代理服务器
    • 代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息。形象的说:它是网络信息的中转站。大部分代理服务器都具有缓冲的功能,就好象一个大的Cache,它有很大的存储空间,它不断将新取得数据储存到它本机的存储器上,如果浏览器所请求的数据在它本机的存储器上已经存在而且是最新的,那么它就不重新从Web服务器取数据,而直接将存储器上的数据传送给用户的浏览器,这样就能显著提高浏览速度和效率
    • http代理服务器的主要功能:
      • 突破自身IP访问限制,访问国外站点。如:教育网、169网等网络用户可以通过代理访问国外网站;
      • 访问一些单位或团体内部资源,如某大学FTP(前提是该代理地址在该资源的允许访问范围之内),使用教育网内地址段免费代理服务器,就可以用于对教育 网开放的各类FTP下载上传,以及各类资料查询共享等服务;
      • 突破中国电信的IP封锁:中国电信用户有很多网站是被限制访问的,这种限制是人为的,不同Serve对地址的封锁是不同的。所以不能访问时可以换一个国外的代理服务器试试;
      • 提高访问速度:通常代理服务器都设置一个较大的硬盘缓冲区,当有外界的信息通过时,同时也将其保存到缓冲区中,当其他用户再访问相同的信息时,则直接由缓冲区中取出信息,传给用户,以提高访问速度;
      • 隐藏真实IP:上网者也可以通过这种方法隐藏自己的IP,免受攻击。

8. https的传输协议原理

9. http不同的版本之间的区别

  1. HTTP/1.0 这是第一个在通讯中指定版本号的HTTP 协议版本,至今仍被广泛采用,特别是在代理服务器中。
  2. HTTP/1.1 当前版本。持久连接被默认采用,并能很好地配合代理服务器工作。还支持以管道方式同时发送多个请求,以便降低线路负载,提高传输速度。
  3. HTTP/1.1相较于 HTTP/1.0 协议的区别主要体现在:
  • 缓存处理
  • 带宽优化及网络连接的使用
  • 错误通知的管理
  • 消息在网络中的发送
  • 互联网地址的维护
  • 安全性及完整性
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容