HTTP 协议的应用场景分析 | 青训营笔记

23 阅读4分钟

这是我参与「第五届青训营 」笔记创作活动的第9天

一、本堂课重点内容:

  1. 场景分析 - 静态资源
  2. 场景分析 - 登录

二、详细知识点介绍:

静态资源

HTTP 协议的静态资源指的是服务器上的固定文件,比如图片、文本文件、视频等。当客户端发送请求到服务器时,服务器会返回这些静态资源。

举个例子,当浏览器请求一个网站的首页时,该网站的首页中可能会包含一些图片、CSS文件和JavaScript文件。这些文件都是静态资源,浏览器会为每个文件发送一个请求,服务器返回相应的文件。

另外,静态资源可以通过缓存机制来提高访问速度。当浏览器第一次请求某个静态资源时,服务器会返回该资源并在浏览器端缓存该资源。在之后的请求中,浏览器会先检查缓存中是否有该资源,若有则直接使用缓存中的资源,而不再向服务器发送请求。

总的来说,静态资源在Web开发中非常重要,它可以为客户端提供图片、文本文件、视频等内容,并通过缓存机制来提高访问速度。

缓存策略

静态资源的缓存策略可以分为两类:服务器端缓存和客户端缓存。

服务器端缓存:在服务器端设置HTTP缓存头,可以让浏览器缓存静态资源。例如,在服务器端设置“Cache-Control”头,设置缓存时间,可以让浏览器缓存静态资源,在缓存时间内不再请求。

客户端缓存:在客户端使用第三方缓存工具,如memcached、redis等来缓存静态资源。这样可以减少静态资源的请求次数,提高网站的访问速度。

登录

HTTP 协议中的登录一般通过表单形式提交,服务器验证通过后返回登录状态。

比如,当用户在浏览器中输入网站地址并点击登录时,浏览器会发送一个 HTTP POST 请求,请求中包含用户名和密码信息。服务器接收到请求后,会验证用户信息是否正确,如果正确就会返回一个 HTTP 状态码 200 和登录成功的消息,同时在响应头中设置一个 Cookie,表示用户已经登录。

跨域

HTTP协议的跨域是指当Web应用程序从不同的域名、协议或端口请求资源时,浏览器会对这些请求进行限制。浏览器会检查请求的来源(即请求的域名、协议和端口)是否与当前页面的来源相同。如果不同,则浏览器会禁止该请求。这种限制是为了防止第三方网站进行恶意攻击,例如获取用户的个人信息。

解决跨域问题的方法有多种,例如:

  • 通过设置HTTP响应头,允许特定域名访问资源。
  • 使用JSONP(JSON with Padding)技术,允许在不同域名之间进行数据传输。
  • 使用CORS(Cross-Origin Resource Sharing)技术,通过设置HTTP响应头实现跨域资源共享。
  • 通过使用代理服务器或跨域资源共享(CORS)来解决跨域问题。

综上所述,跨域是一种常见的Web安全问题,解决跨域的方法有多种,具体采用哪种方法需要根据具体情况进行判断。

三、实践练习例子:

假设有一个名为“api.example.com”的服务器,上面有一些可供其它网站访问的API。还有另一个名为"www.example.com"的网站,想要访问“api.example.com”的API。

在默认情况下,浏览器会拒绝这个请求,因为它是跨域的。为了允许“www.example.com”访问“api.example.com”的API,“api.example.com”服务器需要在响应头中添加Access-Control-Allow-Origin字段。

Access-Control-Allow-Origin字段可以设置为"*",表示允许所有网站访问,或者设置为具体的域名,如"www.example.com",表示只允许“www.example.com”访问。

所以,“api.example.com”服务器在响应头中添加Access-Control-Allow-Origin: "www.example.com" 即可。这样,“www.example.com”就可以访问“api.example.com”的API了。

四、课后个人总结:

本节课学习了HTTP协议中静态资源、缓存策略、登录、跨域等内容。静态资源如图片、CSS、JavaScript等通过浏览器直接访问,而动态资源需要服务器处理后返回给浏览器。缓存策略可以提高页面访问速度,但需要注意缓存的更新问题。登录需要使用session或token来保存用户状态。跨域问题可以通过使用代理服务器或CORS来解决。其中,缓存策略和跨域问题是比较不太容易掌握的知识点。

五、引用参考:

HTTP 协议的应用场景分析