【HTTP】URL结构、HTTP请求和响应的报文格式、HTTP请求的方法、常见的状态码、GET和POST有什么区别、Cookie、Session等重点知识汇总

这篇具有很好参考价值的文章主要介绍了【HTTP】URL结构、HTTP请求和响应的报文格式、HTTP请求的方法、常见的状态码、GET和POST有什么区别、Cookie、Session等重点知识汇总。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

URL格式

HTTP请求和响应报文的字段?

HTTP请求方法

常见的状态码

GET 和 POST 的区别

Cookie 和 Session


URL格式

【HTTP】URL结构、HTTP请求和响应的报文格式、HTTP请求的方法、常见的状态码、GET和POST有什么区别、Cookie、Session等重点知识汇总,计算机网络,http,网络协议,网络

:是用来分割URL的主体部分(通常是路径)和查询字符串(query string)查询字符串是一组键值对的参数

query string:是键值对的结构,&分割键值对,=分割键和值

HTTP请求和响应报文的字段?

【HTTP】URL结构、HTTP请求和响应的报文格式、HTTP请求的方法、常见的状态码、GET和POST有什么区别、Cookie、Session等重点知识汇总,计算机网络,http,网络协议,网络

Content-Type: 数据类型(text/html等)。

Content-Length: 正文的长度。

Host: 客户端告知服务器,所请求的资源是在哪个主机的哪个端口上。

User-Agent: 声明用户的操作系统和浏览器的版本信息。

Referer: 当前页面是哪个页面跳转过来的。

Location: 搭配3XX状态码使用,告诉客户端接下来要去哪里访问。

Cookie: 用于在客户端存储少量信息,通常用于实现会话(session)的功能。

Connection 字段 ---> 长连接

HTTP/1.1 版本的默认连接都是长连接,但为了兼容老版本的 HTTP,需要指定 Connection 首部字段的值为 Keep-Alive。

开启了 HTTP Keep-Alive 机制后, 连接就不会中断,而是保持连接。当客户端发送另一个请求时,它会使用同一个连接,一直持续到客户端或服务器端提出断开连接。

Content-Encoding 字段

Content-Encoding 字段说明数据的压缩方法。表示服务器返回的数据使用了什么压缩格式

Content-Encoding: gzip

HTTP请求方法

GET:用于从服务器获取资源,通常是通过URL传递参数来请求资源。GET请求是幂等的,即多次请求相同资源不会产生不同的结果。

POST:用于向服务器提交数据,通常用于创建新资源或在服务器上执行某些操作。POST请求不幂等,多次提交相同的数据可能会产生不同的结果。

HEAD:类似于GET请求,但只返回资源的头部信息,不返回实际的数据。通常用于检查资源是否存在或获取资源的元数据。

PUT:用于更新或创建指定的资源,通常将请求的数据放在请求体中,以覆盖服务器上的现有资源或创建新资源。

DELETE:用于删除指定的资源。DELETE请求用于删除服务器上的资源。

OPTIONS:用于获取目标资源支持的通信选项。客户端可以使用OPTIONS请求来查询服务器支持的请求方法、头部信息等。

PATCH:用于部分更新资源,通常将请求的数据放在请求体中,只更新资源的一部分而不是整个资源。

TRACE:用于追踪请求在传输过程中的轨迹,通常用于诊断和调试。

CONNECT:通常用于建立与代理服务器的网络连接,以便进行加密通信(如HTTPS)或隧道传输。

常见的状态码

【HTTP】URL结构、HTTP请求和响应的报文格式、HTTP请求的方法、常见的状态码、GET和POST有什么区别、Cookie、Session等重点知识汇总,计算机网络,http,网络协议,网络

1xx 类状态码属于提示信息,是协议处理中的一种中间状态,实际用到的比较少。

2xx 类状态码表示服务器成功处理了客户端的请求,也是我们最愿意看到的状态。

  • 200 OK」是最常见的成功状态码,表示一切正常。如果是非 HEAD 请求,服务器返回的响应头都会有 body 数据。
  • 204 No Content」也是常见的成功状态码,与 200 OK 基本相同,但响应头没有 body 数据。
  • 206 Partial Content」是应用于 HTTP 分块下载或断点续传,表示响应返回的 body 数据并不是资源的全部,而是其中的一部分,也是服务器处理成功的状态。

3xx 类状态码表示客户端请求的资源发生了变动,需要客户端用新的 URL 重新发送请求获取资源,也就是重定向

  • 301 Moved Permanently」表示永久重定向,说明请求的资源已经不存在了,需改用新的 URL 再次访问。
  • 302 Found」表示临时重定向,说明请求的资源还在,但暂时需要用另一个 URL 来访问。

301 和 302 都会在响应头里使用字段 Location,指明后续要跳转的 URL,浏览器会自动重定向新的 URL。

  • 304 Not Modified」不具有跳转的含义,表示资源未修改,重定向已存在的缓冲文件,也称缓存重定向,也就是告诉客户端可以继续使用缓存资源,用于缓存控制。

4xx 类状态码表示客户端发送的报文有误,服务器无法处理,也就是错误码的含义。

  • 400 Bad Request」表示客户端请求的报文有错误,但只是个笼统的错误。
  • 401 Unauthorized」:表示需要身份验证,客户端未提供有效的凭据。
  • 403 Forbidden」表示服务器禁止访问资源,并不是客户端的请求出错。
  • 404 Not Found」表示请求的资源在服务器上不存在或未找到,所以无法提供给客户端。

5xx 类状态码表示客户端请求报文正确,但是服务器处理时内部发生了错误,属于服务器端的错误码。

  • 500 Internal Server Error」与 400 类型,是个笼统通用的错误码,服务器发生了什么错误,我们并不知道。
  • 501 Not Implemented」表示客户端请求的功能还不支持,类似“即将开业,敬请期待”的意思。
  • 502 Bad Gateway」通常是服务器作为网关或代理时返回的错误码,表示服务器自身工作正常,访问后端服务器发生了错误。
  • 503 Service Unavailable」表示服务器当前很忙,暂时无法响应客户端,类似“网络服务正忙,请稍后重试”的意思。

GET 和 POST 的区别

RFC代表"Request for Comments",它是一种用于制定和描述互联网标准、协议和相关信息的文档系列。RFC文档是由互联网工程任务组和其他互联网相关组织发布的,用于记录互联网的技术规范和协议。

根据 RFC 规范,GET 的语义是从服务器获取指定的资源。GET 请求的参数位置一般是写在 URL 中,URL 规定只能支持 ASCII,以?分割URL和传输数据,参数之间以&相连

根据 RFC 规范,POST 的语义是根据请求负荷(报文body)对指定的资源做出处理(POST方法一般用于将数据上传给服务器)。POST 请求携带数据的位置一般是写在报文 body 中

先说明下安全和幂等的概念:

  • 在 HTTP 协议里,所谓的「安全」是指请求方法不会「破坏」服务器上的资源。
  • 所谓的「幂等」,意思是多次执行相同的操作,结果都是「相同」的。

如果从 RFC 规范定义的语义来看:

  • GET 方法就是安全且幂等的,因为它是「只读」操作,无论操作多少次,服务器上的数据都是安全的,且每次的结果都是相同的。所以,可以对 GET 请求的数据做缓存,这个缓存可以做到浏览器本身上(彻底避免浏览器发请求)
  • POST 因为是「新增或提交数据」的操作,会修改服务器上的资源,所以是不安全的,且多次提交数据就会创建多个资源,所以不是幂等的。所以,浏览器一般不会缓存 POST 请求,也不能把 POST 请求的数据做缓存

上面是从 RFC 规范定义的语义来分析的。

但是实际过程中,开发者不一定会按照规范定义的语义来实现 GET 和 POST 方法。比如:

  • 可以用 GET 方法实现新增或删除数据的请求,这样实现的 GET 方法自然就不是安全和幂等。
  • 可以用 POST 方法实现查询数据的请求,这样实现的 POST 方法自然就是安全和幂等。

如果「安全」放入概念是指信息是否会被泄漏的话,虽然 POST 用 body 传输数据,而 GET 用 URL 传输,这样数据会在浏览器地址拦容易看到,但是并不能说 GET 不如 POST 安全的

虽然在浏览器地址拦看不到 POST 提交的 body 数据,但是只要抓个包就都能看到了。

GET和POST没有本质区别,使用GET实现的场景基本上也可以使用POST,使用POST实现的场景基本上也可以使用GET

Cookie 和 Session

Cookie和Session是用于在Web应用中维护用户状态和跟踪用户会话的两种常见方式

Cookie

  • cookie是请求头中的一个重要字段,在服务器返回的响应报文中,可以在响应header中包含一个或多个Set-Cookie这样的资源,浏览器看到这些Set-Cookie就会把这样的数据保存在浏览器本地。
  • Cookie典型的应用场景,在客户端维持登陆状态。在某个网站上登陆成功之后,浏览器就会记住当前登录用户的身份信息,然后在接下来的访问网站的其他页面,服务器也能知道是谁在登录。
  • Cookie是存储在客户端(通常是浏览器)中的小型文本文件(一般<=4KB)。服务器将Cookie发送给客户端并存储在客户端的本地文件中,以便在后续HTTP请求中将Cookie发送回服务器。
  • Cookie通常用于存储少量简单的文本数据,例如用户偏好设置或用于跟踪用户的身份验证令牌。

Cookie不是缓存,是持久化存储数据的手段,浏览器自动帮你存储,这个存储是保存到硬盘上的;而缓存的数据不一定是持久化的(也可以在内存里缓存);缓存的数据是用来提高访问速度的!

  • Cookie数据存储在客户端的浏览器中,因此可能容易受到客户端篡改或窃取的风险。
  • 由于每个HTTP请求都会包含任何相关Cookie数据,因此可能会增加网络流量和加载时间

Session

  • 服务器同一时刻收到的请求有很多,服务器需要清楚的区分每个请求属于哪个客户端,就需要先在服务器这里记录每个用户的身份标识和所对应的用户信息。就有了session!sessionId是由服务器生成的一个唯一性字符串;
  • Session数据通常存储在服务器上。服务器为每个客户端会话创建一个唯一的标识符(通常是会话ID,sessionID),并使用该标识符来跟踪和管理与特定用户相关的数据。

会话的本质就是一个哈希表,存储着一些键值对。其中key就是身份标识(sessionId),value就是用户信息(session)。文章来源地址https://www.toymoban.com/news/detail-729910.html

  • Session用于存储更敏感和持久的数据,例如用户身份验证信息。Session通常用于存储更大、更复杂的数据,如用户登录状态、购物车内容等。
  • Session数据存储在服务器上,客户端无法直接访问或修改Session数据,因此通常比Cookie更安全。但服务器端的安全性也非常重要,以防止会话劫持等攻击。
  • Session数据存储在服务器上,不会在每个请求中传输,因此不会对网络性能产生太大影响。

到了这里,关于【HTTP】URL结构、HTTP请求和响应的报文格式、HTTP请求的方法、常见的状态码、GET和POST有什么区别、Cookie、Session等重点知识汇总的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Node.js-http模块服务端请求与响应操作,请求报文与响应报文

    简单案例创建HTTP服务端: 端口号被占用: 1.关闭当前正在运行监听端口的服务 2.修改其他的端口号 获取请求方式类型 获取请求的 url 地址 通过实例化 URl 对象获取路径与查询字符串 获取 http 协议的版本号 获取 http 的请求头 响应报文组成: 1.响应行 :包含:HTTP 版本号、响

    2024年02月14日
    浏览(31)
  • HTTP请求方法之POST请求的三种常见数据提交格式

    目录 🌐 application/x-www-form-urlencoded 🌐 multipart/form-data 🌐 application/json    本文所讲的 POST 请求是 HTTP/1.1 协议中规定的众多 HTTP 请求方法的其中最常用的一个。一般使用 POST 请求方法向服务器发送数据(主要是一些创建更新操作),本文讨论的是 POST 请求方法常用的三种数据

    2024年02月09日
    浏览(62)
  • Nodejs基础6之HTTP模块的获取请求行和请求头、获取请求体、获取请求路径和查询字符串、http请求练习、设置HTTP响应报文、http响应练习

    含义 语法 重点掌握 请求方法 request.method * 请求版本 request.httpVersion 请求路径 request.url * URL 路径 require(‘url’).parse(request.url).pathname * URL 查询字符串 require(‘url’).parse(request.url, true).query * 请求头 request.headers * 请求体 request.on(‘data’, function(chunk){}),request.on(‘end’, functio

    2024年02月20日
    浏览(34)
  • Qt 网络编程之美:探索 URL、HTTP、服务发现与请求响应

    Qt 网络编程是使用 Qt 框架进行网络应用开发的重要组成部分。Qt 是一个跨平台的 C++ 应用程序开发框架,广泛应用于各种领域,包括桌面应用、移动应用和嵌入式设备。在本文中,我们将探讨 Qt 网络编程的优势,以及本文涉及的主题,包括 URL、HTTP、服务发现和请求响应等。

    2023年04月23日
    浏览(38)
  • http请求和响应格式说明,http的get和post请求方式说明,http的请求体body的几种数据格式

    一个HTTP请求报文由 请求行(request line)、请求头部(header)、空行和请求数据 4个部分组成, 请求报文的一般格式 1、第一行必须是一个请求行(request-line),用来说明请求类型,要访问的资源以及所使用的HTTP版本 2、紧接着是一个请求头(header),用来说明服务器要使用的附加信息

    2024年02月02日
    浏览(43)
  • 常见的http请求头以及响应头

    1-1 Accept 1、 Accept : text/html 浏览器可以接收服务器回发的类型为text/html 2、 Accept: */*代表浏览器可以处理所有类型 1-2 Accept-Encoding 1、 Accept-Encoding: gzip,deflate 浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate) 1-3 Accept

    2023年04月09日
    浏览(30)
  • HTTP 请求和响应的原理以及常见问题、解决办法

    在现代 Web 开发中,HTTP 请求和响应是最基本的通信方式。这两者是通过 HTTP 协议进行交互的,在前端和后台开发中都需要对其处理有一定的了解。我将为大家介绍 HTTP 请求和响应的处理原理以及常见问题和解决办法。 客户端向服务器发送请求,请求格式如下: 服务器接收到

    2024年02月10日
    浏览(32)
  • Http请求被拒绝,响应返回 The requested URL was rejected. Please consult with your administrator.

    问题现象 公司管理后台在调用 https://xxx/v2/cms/operation/notices/wm/temp/content 接口时,响应数据直接返回如下: 问题查因 一般来说我们查看问题,会从 Nginx 入手,所以去查了 Nginx 日志,发现没有对应输出。那就说明这个请求没有到 Nginx。 最终定位原因:公司防火墙策略,将 te

    2024年02月11日
    浏览(32)
  • HTTP介绍 原理 消息结构 客户端请求 服务器响应 HTTP状态码

    HTTP协议 是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于万维网(www.world wide web)服务器传输超文本到本地浏览器的传送协议 HTTP 是基于TCP/IP(三次握手,四次挥手)通信协议来传输数据(HTML文件,图片文件,查询结果等) TCP:可靠的,丢包重传 UTP:不可靠的,直播,

    2024年02月05日
    浏览(45)
  • java http请求url有空格,通过unicode方法处理

    在Java中,可以通过Unicode编码来处理URL中的空格等特殊字符,将其转换为%xx的形式。下面是一个处理示例: 以上代码中,我们使用了URLEncoder.encode()方法将URL中的特殊字符进行编码,并将所有的+替换为%20,表示空格的编码。使用时,只需要传入需要编码的URL即可,例如: 输出

    2024年02月12日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包