栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

自学网络编程第一天- HTTP基础:基础原理、Request请求、Response应答

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

自学网络编程第一天- HTTP基础:基础原理、Request请求、Response应答

自学网络编程第一天- HTTP基础:基础原理、Request请求、Response应答
  • 基础原理
  • Request 请求
    • 请求格式
    • 请求方式
      • GET 请求
      • POST 请求
    • 请求头
  • Response 应答(响应)
    • 应答格式
    • 响应状态码
    • 响应头
  • 页面渲染
    • 服务器渲染
    • 浏览器渲染

基础原理

我们通过浏览器浏览一个网站,其具体的流程是这样的:

  1. 浏览器向 URL 发送 HTTP 请求
  2. 服务器接收到请求,查看请求内容
  3. 根据请求内容准备数据
  4. 将数据以 HTTP 应答形式发回
  5. 浏览器收到应答,分析应答内容
  6. 根据应答内容渲染并呈现页面
  7. 用户进行操作
  8. 浏览器判断用户的操作,是发送给页面脚本处理还是发送回服务器处理

大致流程是这样的,但是具体上还有许多需要处理的细节,比如说URL的域名解析、HTTP的三次握手等。基于 HTTP 的网络编程大概的流程也是这样,所以 HTTP 请求和 应答是十分重要的部分。

Request 请求

request 请求是 HTTP 协议对服务端发送的一种特殊报文形式

请求格式

请求信息由3部分构成:

  • 请求行:请求方法 URL 协议/版本
  • 请求头:请求报文头部(Request Header)信息,放置一些给服务器使用的附加信息
  • 请求体:请求正文
GET /sample.Jsp HTTP/1.1
Accept:image/gif.image/jpeg,** 能够接受所有类型
  • Accept-Encoding :客户端可以接受的编码方法,通常指压缩方法。常用的有 gzip, deflate, br 等
  • Accept-Language :客户端可以接收的语言例
    Accept-Language: zh-CN,zh;q=0.9
  • Connection :客户端和服务器之间的连接方式
    Connection: keep-alive :当一个网页打开后,TCP连接不会关闭。如果再次访问服务器上的网页,会继续使用这一条连接
    Connection: close :当 Request 完成后,立刻关闭 TCP 连接。
  • Host :主要用于指定被请求资源的主机和端口号,通常从 HTTP URL 中提取
  • Referer :主要用于告诉服务器是从哪个页面跳转过来的
  • User-Agent :客户端的操作系统和浏览器的名称、版本等信息
  • Cache-Control :缓存控制,默认为private
    Cache-Control: private :响应只能够作为私有的缓存,不能在用户间共享
    Cache-Control: public :响应会被缓存,并在多用户间共享。正常情况下,如果要求 HTTP 认证,则响应会自动设置为 private
    Cache-Control: must-revalidate :响应在特定条件下会被宠用,以满足接下来的请求,但是它必须到服务端去验证是不是仍是最新的
    Cache-Control: no-cache :响应不会被缓存,而是实时向服务器端请求资源
    Cache-Control: max-age=10 :设置缓存最大的有效时间,单位秒
    Cache-Control: no-store :在任何条件下,响应都不会被缓存,且不会被写入到客户端的磁盘里。基于安全考虑的某些敏感响应会使用
  • Cookie :发送存储的 Cookie 信息,多用来进行身份识别
  • Range :用于断点续传
    Range: bytes=0-5 :指定第一个字节的位置和最后一个字节的位置,告诉服务端想要获取的部分。
  • Response 应答(响应)

    Response 是服务器对于 request 请求的回答,称为应答或响应

    应答格式

    类似请求信息的格式,应答信息也分为三部分:

    • 状态行:协议 状态码 状态信息
    • 响应头:响应报文头部(Response Header)信息,放置一些给客户端使用的附加信息
    • 响应体:服务器返回的客户端真正要用的内容,例如 html,json 等
    HTTP/1,1 200 OK
    Connection: keep-alive
    Content-Encoding: gzip
    Content-Type: text/html;charset=utf-8
    

    应答状态行为第一行,协议、状态码、状态信息使用空格分开。响应头为第二行至空行上一行,格式同请求头使用键值对格式。响应正文为空行下方所有。

    响应状态码

    具体的状态码和含义可以看这里:

    HTTP请求状态码

    响应头

    响应头部信息写了一些发送给客户端的需要使用到的信息。常用的响应头信息有:

    • Cache-Control : 对应请求头的 Cache-Control
    • Content-Type : 回发资源文件的类型和字符编码,客户端根据这里的信息进行解码和解析。对应请求头的 Accept 。格式为 Content-Type: text/html;charset=UTF-8
    • Content-Encoding :回发数据的编码(压缩)格式,对应请求头的 Accept-Encoding
    • Date :服务器发送资源时的服务器时间,主要解决不同时区请求资源时的时间混乱问题
    • Server :服务器信息及对应版本
    • Transfer-Encoding :发送编码。服务器发送资源时候是分块的,一般发送的资源时服务器动态生成的,在发送时还不知道发送资源的大小,所以采用分块发送
      Transfer-Encoding: chunked :服务器分块发送的资源每一块都是独立的,都能标示自己的长度,最后一块的长度是0。当客户端读取到0长度的块时,就确定资源已经传输完成了。
    • Connection :回应请求头的 Connection。
    • Last-Modified :所请求的对象的最后修改日期
    • Etag :就是一个对象(比如URL)的标志值,就一个对象而言,比如一个html文件,如果被修改了,其Etag也会别修改,所以,ETag的作用跟Last-Modified的作用差不多,主要供WEB服务器判断一个对象是否改变了。比如前一次请求某个html文件时,获得了其 ETag,当这次又请求这个文件时,浏览器就会把先前获得ETag值发送给WEB服务器,然后WEB服务器会把这个ETag跟该文件的当前ETag进行对比,然后就知道这个文件有没有改变了。
    • Refresh :刷新,用于重定向
      Refresh: 5;url=http://baidu.com :5秒后刷新重定向
    • Access-Control-Allow-Methods :允许哪些方法来访问
      Access-Control-Allow-Methods: GET,POST,PUT,DELETE
    页面渲染

    当浏览器发送一个请求后,收到应答,分析应答内容,然后将内容翻译为可供用户查看的页面,此过程成为页面渲染。页面渲染通常有两种方式:服务器渲染和客户端渲染。

    服务器渲染

    当服务器收到请求后,需要返回的数据和 html 信息整合在一起,统一返回给浏览器,这种方法就是服务器渲染。服务器渲染发回的就是能够直接呈现给用户的 html 信息,浏览器直接翻译就可以了。大部分网站使用的是这种方式。

    浏览器渲染

    当服务器收到请求后,只返回一个 html 的骨架,浏览器收到此 html 时,执行其附带的脚本,根据脚本再次向服务器请求数据。当浏览器收到返回的数据后,和之前收到的 html 骨架进行整合,再渲染呈现。这种方式就是浏览器渲染,它需要多次访问服务器。

    基本上拉加载式的页面就是使用的浏览器渲染方式。

    但是如果使用爬虫获取数据时,使用此种方式的页面可以直接获取数据而不用分析 html 信息,反而更方便。

    转载请注明:文章转载自 www.mshxw.com
    本文地址:https://www.mshxw.com/it/993355.html
    我们一直用心在做
    关于我们 文章归档 网站地图 联系我们

    版权所有 (c)2021-2022 MSHXW.COM

    ICP备案号:晋ICP备2021003244-6号