专栏首页M不作声从用途了解http字段

从用途了解http字段

网络通信是前端必知必会的一部分内容,同时也是面试中出现的高频问题。

HTTP是超文本传输协议的缩写,HTTP协议采用了请求/响应模型。所以一般分为通用、请求、响应三类的头字段。在DevTools中的Network面板中,随意点一个请求,就可以看见General、Response Headers、Request Headers。

但这篇文章从另一个角度来分类。这样有一个好处,在面试中,可以从各种角度绕回到http头字段。

信息类

主要规范接受的字符编码、编码格式、内容类型等。主要有以下字段:

  • Accept:接受的内容类型
  • Accept-Charset:字符编码
  • Accept-Encoding:编码格式
  • Accept-Language:语言
  • From:发送请求的用户的Email地址
  • Date:发送报文的日期和时间
  • Status-Code:状态码
  • ...

缓存

大家都知道缓存策略有两种:强缓存和协商缓存,且都是通过HTTP Header来实现的。

强缓存在缓存时间内直接从缓存中获取数据,状态码为200。设置两种HTTP Header:

  • Expires:值为一个时间,代表资源失效时间。当前时间超过该时间时,缓存失效。
  • Cache-Control:其中一个字段max-age=30表示当前资源的有效时间为30s。

协商缓存则需要验证请求资源是否有更新,如果命中缓存则状态码为304。也是设置两种HTTP Header:

  • Last-Modified表示本地文件最后修改时间。
  • If-Modified-Since会将上边的值发送给服务器,询问服务器在该日期后资源是否有更新。
  • Etag类似于文件指纹,当文件改变后Etag值就会发生改变。
  • If-None-Match将上边的值发送给服务器,询问服务器资源是否发生改变。

网络通信

HTTP通信是无状态的,但在与服务器通信时是需要有状态的。cookie是服务器保存在客户端的一小段文本信息,大小不超过4K。浏览器每次向客户端发送请求的时候,都会自动附带这段信息。

在Cookie中也有很多字段

  • name:cookie的名称
  • value:cookie的值
  • domain:cookie可以访问的域名
  • path:cookie可以访问的页面路径
  • Size:cookie的大小
  • httponly:设置js禁止访问cookie,可以防止XSS攻击
  • expires/Max-Age:有效期
  • secure:设置是否只能通过https传递该cookie

面试又可以扯到这个方向

跨域

如果浏览器发送请求时,如果存在跨域行为,则会在请求头中携带Origin字段。

同时,服务器会在响应报文中添加Access-Control-Allow-Origin字段,值为允许跨域的域名。

在跨域问题又可以聊跨域的解决方式:jsonp、cors、Nginx等九种。

使用vary:origin防止CDN破坏

网络安全

XSS是一种最常见且危害最大的网页安全漏洞,攻击者想尽一切办法。

CSP可以极大程度的保证网页的安全性。

开启CSP的一种方式就是HTTP Header的Content-Security-Policy字段。

CSP也是内含了多个字段,对浏览器的不同类型的资源做出限制。

面试的时候又可以再扯其他的网络安全问题及解决方式。

本文分享自微信公众号 - 大前端合集(fe-stack),作者:M不作声

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-10-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 使用python操作Excel文件

    我们在办公日常用经常会接触到办公软件Excel,也会遇到大量数据迁移的问题,手动操作这么反人类的事情,俺们程序员肯定是不会干的。

    不作声
  • 网络协议TCP、UDP

    国际标准化组织(ISO)指定了一个计算机或通信系统间互联的标准体系,一般称为OSI参考模型或七层模型。做前端肯定少不了和网络打交道,所以前端知识栈中必有网络协议...

    不作声
  • eggjs快速入门

    每个中间件就像是洋葱的一层,所有的请求经过一个中间件都会执行两次,这样可以非常方便的后置处理逻辑。

    不作声
  • DotNetCore Web应用程序中的Cookie管理

    作者简介:Jon(Jonathan)Seeley,一位资深.NET开发者,主要从事Asp.NET/Asp.NET CORE/WPF等技术栈的开发,他的博客地址为...

    心莱科技雪雁
  • cookie、sessionStorage、localStorage

    版权声明:本文为博主原创文章,未经博主允许不得转载。 ...

    用户1212940
  • 不同支付机构提供的电商“二清”解决方案是什么?

    前面写了一篇文章《全面解析"二清"模式存在的问题、风险、判断方法》,里面提到了:不仅“资金二清”行为属于“二清”,“信息二清”也属于“二清”。具体来说,无证机构...

    金融民工小曾
  • 生产者消费者模型

        生产者消费者模型 在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题。该模式通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度。...

    用户1214487
  • CoreOS那些事之Rkt容器尝鲜(上) 转

    从CoreOS发布Rocket应用容器项目到现在,已经过去半年时间了。为了增加辨识度,项目更名为了Rkt。在沉寂了许久后,最近又开始在社区里出现了一些新鲜的声音...

    bdcn
  • oracle修改字段类型时报"要更改的列必须为空"处理方法

    执行以下语句报"要修改数据类型,则要更改的列必须为空" alter table 表名 modify (目标字段 varchar2(100));

    用户5640963
  • 混合线性模型介绍--Wiki

    混合线性模型: 是即包括固定因子,又包括随机因子的模型。 混合线性模型被广泛应用于物理、生物和社会科学。尤其是一些重复测量的数据及面板数据。混合线性模型比较突出...

    邓飞

扫码关注云+社区

领取腾讯云代金券