文章目录

  • 🌟 了解HTTP请求的知识点
  • 🍊 1. HTTP协议
  • 🎉 1.1 HTTP协议的基本概念
  • 🎉 1.2 HTTP请求报文
  • 🎉 1.3 HTTP响应报文
  • 🎉 1.4 HTTP状态码
  • 🍊 2. URL
  • 🎉 2.1 URL的组成
  • 🎉 2.2 URL编码
  • 🍊 3. 跨域问题
  • 🎉 3.1 跨域的原因
  • 🎉 3.2 如何解决跨域问题
  • 🍊 4. 请求方法
  • 🎉 4.1 GET方法
  • 🎉 4.2 POST方法
  • 🎉 4.3 PUT方法
  • 🎉 4.4 DELETE方法
  • 🍊 5. HTTP头部
  • 🎉 5.1 常见的HTTP头部信息
  • 🍊 6. Cookie和Session
  • 🎉 6.1 Cookie
  • 🎉 6.2 Session
  • 🍊 7. 序列化
  • 🎉 7.1 JSON
  • 🎉 7.2 XML
  • 🍊 8. 安全
  • 🎉 8.1 HTTPS
  • 🎉 8.2 常见的攻击方式


📕我是廖志伟,一名Java开发工程师、Java领域优质创作者、博客专家、51CTO专家博主、阿里云专家博主、清华大学出版社签约作者、产品软文创造者、技术文章评审老师、问卷调查设计师、个人社区创始人、开源项目贡献者。🌎跑过十五公里、徒步爬过衡山、🔥有过三个月减肥20斤的经历、是个喜欢躺平的狠人。

📘拥有多年一线研发和团队管理经验,研究过主流框架的底层源码(Spring、SpringBoot、Spring MVC、SpringCould、Mybatis、Dubbo、Zookeeper),消息中间件底层架构原理(RabbitMQ、RockerMQ、Kafka)、Redis缓存、MySQL关系型数据库、 ElasticSearch全文搜索、MongoDB非关系型数据库、Apache ShardingSphere分库分表读写分离、设计模式、领域驱动DDD、Kubernetes容器编排等。🎥有从0到1的高并发项目经验,利用弹性伸缩、负载均衡、报警任务、自启动脚本,最高压测过200台机器,有着丰富的项目调优经验。

希望各位读者大大多多支持用心写文章的博主,现在时代变了,信息爆炸,酒香也怕巷子深,博主真的需要大家的帮助才能在这片海洋中继续发光发热,所以,赶紧动动你的小手,点波关注❤️,点波赞👍,点波收藏⭐,甚至点波评论✍️,都是对博主最好的支持和鼓励!

  • 💂 博客主页: 我是廖志伟
  • 👉开源项目:java_wxid
  • 🌥 哔哩哔哩我是廖志伟
  • 🎏个人社区:幕后大佬

📥博主的人生感悟和目标

  • 🍋程序开发这条路不能停,停下来容易被淘汰掉,吃不了自律的苦,就要受平庸的罪,持续的能力才能带来持续的自信。我本是是一个很普通程序员,放在人堆里,除了与生俱来的盛世美颜,就剩180的大高个了,就是我这样的一个人,默默写博文也有好多年了。
  • 📺有句老话说的好,牛逼之前都是傻逼式的坚持,希望自己可以通过大量的作品、时间的积累、个人魅力、运气、时机,可以打造属于自己的技术影响力。
  • 💥内心起伏不定,我时而激动,时而沉思。我希望自己能成为一个综合性人才,具备技术、业务和管理方面的精湛技能。我想成为产品架构路线的总设计师,团队的指挥者,技术团队的中流砥柱,企业战略和资本规划的实战专家。
  • 🎉这个目标的实现需要不懈的努力和持续的成长,但我必须努力追求。因为我知道,只有成为这样的人才,我才能在职业生涯中不断前进并为企业的发展带来真正的价值。在这个不断变化的时代,我必须随时准备好迎接挑战,不断学习和探索新的领域,才能不断地向前推进。我坚信,只要我不断努力,我一定会达到自己的目标。

📙经过多年在创作上千篇文章的经验积累,我已经拥有了不错的写作技巧。同时,我还与清华大学出版社签下了四本书籍的合约,并将陆续在明年出版。这些书籍包括了基础篇、进阶篇、架构篇的📌《Java项目实战—深入理解大型互联网企业通用技术》📌,以及📚《解密程序员的思维密码–沟通、演讲、思考的实践》📚。具体出版计划会根据实际情况进行调整,希望各位读者朋友能够多多支持!

🌾阅读前,快速浏览目录和章节概览可帮助了解文章结构、内容和作者的重点。了解自己希望从中获得什么样的知识或经验是非常重要的。建议在阅读时做笔记、思考问题、自我提问,以加深理解和吸收知识。阅读结束后,反思和总结所学内容,并尝试应用到现实中,有助于深化理解和应用知识。与朋友或同事分享所读内容,讨论细节并获得反馈,也有助于加深对知识的理解和吸收。

🔔如果您需要转载或者搬运这篇文章的话,非常欢迎您私信我哦~

💡在这个美好的时刻,本人不再啰嗦废话,现在毫不拖延地进入文章所要讨论的主题。接下来,我将为大家呈现正文内容。

🌟 了解HTTP请求的知识点

在进行HTTP请求时,需要掌握以下几个重要的知识点。

🍊 1. HTTP协议

HTTP(Hypertext Transfer Protocol)是一种用于获取网络资源的协议,它基于客户端-服务器架构模式,以请求-响应的方式进行通信。

🎉 1.1 HTTP协议的基本概念

HTTP协议由请求报文和响应报文组成,其中请求报文由请求行、请求头部和请求体组成,响应报文由状态行、响应头部和响应体组成。请求报文用于向服务器发送请求,响应报文用于返回服务器处理结果。

🎉 1.2 HTTP请求报文

HTTP请求报文的基本格式如下:

<method> <URL> <version>        //请求行
<headers>                       //请求头部
                                //请求体

其中,<method>表示请求方法,如GET、POST、PUT、DELETE等;<URL>表示请求的URL地址;<version>表示HTTP协议的版本号,常用的版本号有HTTP/1.0和HTTP/1.1。

🎉 1.3 HTTP响应报文

HTTP响应报文的基本格式如下:

<version> <status> <reason>     //状态行
<headers>                       //响应头部
                                //响应体

其中,<version>表示HTTP协议的版本号;<status>表示状态码,用于表示服务器处理结果的状态;<reason>表示状态码的原因短语,用于描述状态码的含义。

🎉 1.4 HTTP状态码

HTTP状态码用于表示服务器处理请求的结果状态,常见的状态码如下:

  • 1xx:信息性状态码,表示服务器已接收请求并继续处理。
  • 2xx:成功状态码,表示服务器已成功处理请求。
  • 3xx:重定向状态码,表示需要进一步操作以完成请求。
  • 4xx:客户端错误状态码,表示请求包含语法错误或无法完成请求。
  • 5xx:服务器错误状态码,表示服务器无法完成请求。

🍊 2. URL

URL(Uniform Resource Locator)是用于定位互联网上资源的地址,它由协议名、主机名、端口号、路径和查询字符串等部分组成。

🎉 2.1 URL的组成

URL的基本格式如下:

<protocol>://<host>:<port>/<path>?<query>

其中,<protocol>表示协议名,如HTTP、HTTPS、FTP等;<host>表示主机名或IP地址;<port>表示端口号,默认情况下HTTP使用80端口,HTTPS使用443端口;<path>表示资源路径;<query>表示查询字符串,用于传递额外的参数信息。

🎉 2.2 URL编码

在URL中,对于一些特殊字符,如空格、中文字符等,需要进行URL编码,将其转换为%xx的形式。例如,将中文字符"中国"编码后的结果为"%E4%B8%AD%E5%9B%BD"。

🍊 3. 跨域问题

跨域指的是在当前页面的域名、协议或端口号与请求目标资源的域名、协议或端口号不一致时,浏览器会阻止页面使用JavaScript等方式访问请求目标资源。

🎉 3.1 跨域的原因

跨域的原因主要有以下几个方面:

  • 浏览器的同源策略:浏览器限制了页面通过JavaScript等方式跨域访问其他域名下的资源,只有在同源的情况下才能进行跨域访问。
  • CDN缓存:CDN缓存的资源可能存放在不同的域名下,导致跨域问题。
  • 负载均衡:负载均衡时,资源可能分散在不同的服务器上,导致跨域问题。

🎉 3.2 如何解决跨域问题

解决跨域问题的方法主要有以下几种:

  • JSONP: 利用 <script> 元素的跨域特性,将跨域请求返回的数据包装成JavaScript函数调用形式返回给页面,从而实现跨域访问。
  • CORS:通过在服务器端设置响应头,允许指定来源的跨域请求访问服务器资源。
  • 代理:通过在同一域名下设置代理服务器,将跨域请求转发到代理服务器上,由代理服务器发起真正的跨域请求,从而实现跨域访问。
  • postMessage:通过使用HTML5中的postMessage函数,在不同的窗口或iframe间进行跨域通信。

🍊 4. 请求方法

HTTP定义了几种常用的请求方法,常见的请求方法包括GET、POST、PUT、DELETE等。

🎉 4.1 GET方法

GET(又称读取)方法用于请求获取服务器上的资源,常用于查询数据或请求页面。

🎉 4.2 POST方法

POST(又称提交)方法用于向服务器提交数据,常用于提交表单数据或上传文件。

🎉 4.3 PUT方法

PUT(又称上传)方法用于向服务器上传文件或更新资源。

🎉 4.4 DELETE方法

DELETE(又称删除)方法用于删除服务器上的资源。

🍊 5. HTTP头部

HTTP头部包含了请求报文和响应报文的元信息,用于描述报文的各种属性和特征。

🎉 5.1 常见的HTTP头部信息

常见的HTTP头部信息包括:

  • Content-Type:指定请求或响应的MIME类型。
  • User-Agent:指定客户端的类型和版本号。
  • Referer:指定请求的来源地址。
  • Cookie:指定HTTP Cookie的值。
  • Accept-Encoding:指定可接受的压缩算法。

🍊 6. Cookie和Session

Cookie和Session是HTTP协议中常用的两种状态管理机制。

🎉 6.1 Cookie

Cookie是一种在客户端存储数据的机制。当服务器向客户端发送响应时,可以在响应头部中添加Set-Cookie头部信息,客户端收到响应后保存Cookie信息,以便后续的请求使用。

🎉 6.2 Session

Session是一种在服务器端存储数据的机制。当客户端第一次访问服务器时,服务器会创建一个Session对象,为该Session对象生成一个唯一的Session ID,将Session ID以Cookie的形式发送给客户端保存。客户端后续的请求会带上该Cookie信息,服务器通过Session ID来识别客户端,从而实现状态管理。

🍊 7. 序列化

序列化是将对象转换为可传输的格式的过程。在HTTP请求和响应中,常用的序列化方式包括JSON、XML和HTML等。

🎉 7.1 JSON

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它使用文本格式存储数据,易于阅读和编写。

🎉 7.2 XML

XML(eXtensible Markup Language)是一种可扩展的标记语言,它可以用于描述数据结构和语义。

🍊 8. 安全

HTTP的安全问题主要包括数据传输过程中的窃听和篡改,以及数据存储过程中的不安全因素。为了提高HTTP的安全性,可以采用HTTPS协议进行加密传输。

🎉 8.1 HTTPS

HTTPS(Hyper Text Transfer Protocol Secure)是HTTP协议的安全版本,它使用SSL/TLS协议对数据进行加密,防止窃听和篡改。

🎉 8.2 常见的攻击方式

常见的HTTP攻击方式包括以下几种:

  • XSS(Cross-Site Scripting)攻击:利用网页开发中存在的安全漏洞,向页面注入恶意脚本代码,从而实现对用户数据的窃取和篡改。
  • CSRF(Cross-Site Request Forgery)攻击:利用用户已登录的身份,向用户不知情的情况下发送恶意请求,从而篡改用户数据或执行一些恶意操作。
  • SQL注入攻击:通过构造恶意的SQL语句,向数据库中插入或删除数据,从而破坏数据库的完整性和保密性。
  • DDOS(Distributed Denial of Service)攻击:通过恶意代码或大量的请求占用服务器的资源,导致服务器无法响应正常的请求。

以上是关于HTTP请求的一些重要知识点,了解这些知识点有助于我们更好地理解和使用HTTP协议。