技术标签: 前端技术
作为一名前端开发人员,肯定少不了要和网络打交道,因为要从服务器端拉取数据,从服务端获取数据最常用的方式还是通过HTTP请求。给服务器发请求的时候有请求头,接受服务器响应的时候有响应头,客户端和服务器端互相沟通需要的信息都是通过这些“头”来传送,这些信息是一些类似key:value的键值对。了解这些“头”中字段的含义对于理解整个请求过程有很大的帮助。这里列举了常用的“头”字段的解释以及例子,本文可以作为工具文收藏,以备需要时查看。
常用标准请求头字段#####
Accept 设置接受的内容类型
Accept: text/plain
Accept-Charset 设置接受的字符编码
Accept-Charset: utf-8
Accept-Encoding 设置接受的编码格式
Accept-Encoding: gzip, deflate
Accept-Datetime 设置接受的版本时间
Accept-Datetime: Thu, 31 May 2007 20:35:00 GMT
Accept-Language 设置接受的语言
Accept-Language: en-US
Authorization 设置HTTP身份验证的凭证
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Cache-Control 设置请求响应链上所有的缓存机制必须遵守的指令
Cache-Control: no-cache
Connection 设置当前连接和hop-by-hop协议请求字段列表的控制选项
Connection: keep-alive
Connection: Upgrade
Content-Length 设置请求体的字节长度
Content-Length: 348
Content-MD5 设置基于MD5算法对请求体内容进行Base64二进制编码
Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ==
Content-Type 设置请求体的MIME类型(适用POST和PUT请求)
Content-Type: application/x-www-form-urlencoded
Cookie 设置服务器使用Set-Cookie发送的http cookie
Cookie: $Version=1; Skin=new;
Date 设置消息发送的日期和时间
Date: Tue, 15 Nov 1994 08:12:31 GMT
Expect 标识客户端需要的特殊浏览器行为
Expect: 100-continue
Forwarded 披露客户端通过http代理连接web服务的源信息
Forwarded: for=192.0.2.60;proto=http;by=203.0.113.43
Forwarded: for=192.0.2.43, for=198.51.100.17
From 设置发送请求的用户的email地址
From: [email protected]
Host 设置服务器域名和TCP端口号,如果使用的是服务请求标准端口号,端口号可以省略
Host: en.wikipedia.org:8080
Host: en.wikipedia.org
If-Match 设置客户端的ETag,当时客户端ETag和服务器生成的ETag一致才执行,适用于更新自从上次更新之后没有改变的资源
If-Match: "737060cd8c284d8af7ad3082f209582d
If-Modified-Since 设置更新时间,从更新时间到服务端接受请求这段时间内如果资源没有改变,允许服务端返回304 Not Modified
If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT
If-None-Match 设置客户端ETag,如果和服务端接受请求生成的ETage相同,允许服务端返回304 Not Modified
If-None-Match: "737060cd8c284d8af7ad3082f209582d"
If-Range 设置客户端ETag,如果和服务端接受请求生成的ETage相同,返回缺失的实体部分;否则返回整个新的实体
If-Range: "737060cd8c284d8af7ad3082f209582d"
If-Unmodified-Since 设置更新时间,只有从更新时间到服务端接受请求这段时间内实体没有改变,服务端才会发送响应
If-Unmodified-Since: Sat, 29 Oct 1994 19:43:31 GMT
Max-Forwards 限制代理或网关转发消息的次数
Max-Forwards: 10
Origin 标识跨域资源请求(请求服务端设置Access-Control-Allow-Origin响应字段)
Origin:
http://www.example-social-network.com
Pragma 设置特殊实现字段,可能会对请求响应链有多种影响
Pragma: no-cache
Proxy-Authorization 为连接代理授权认证信息
Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Range 请求部分实体,设置请求实体的字节数范围,具体可以参见HTTP/1.1中的Byte serving
Range: bytes=500-999
Referer 设置前一个页面的地址,并且前一个页面中的连接指向当前请求,意思就是如果当前请求是在A页面中发送的,那么referer就是A页面的url地址(轶事:这个单词正确的拼法应该是"referrer",但是在很多规范中都拼成了"referer",所以这个单词也就成为标准用法)
Referer:
http://en.wikipedia.org/wiki/Main_Page
TE 设置用户代理期望接受的传输编码格式,和响应头中的Transfer-Encoding字段一样
TE: trailers, deflate
Upgrade 请求服务端升级协议
Upgrade: HTTP/2.0, HTTPS/1.3, IRC/6.9, RTA/x11, websocket
User-Agent 用户代理的字符串值
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/21.0
Via 通知服务器代理请求
Via: 1.0 fred, 1.1 example.com (Apache/1.1)
Warning 实体可能会发生的问题的通用警告
Warning: 199 Miscellaneous warning
常用非标准请求头字段#####
X-Requested-With 标识Ajax请求,大部分js框架发送请求时都会设置它为XMLHttpRequest
X-Requested-With: XMLHttpRequest
DNT 请求web应用禁用用户追踪
DNT: 1 (Do Not Track Enabled)
DNT: 0 (Do Not Track Disabled)
X-Forwarded-For 一个事实标准,用来标识客户端通过HTTP代理或者负载均衡器连接的web服务器的原始IP地址
X-Forwarded-For: client1, proxy1, proxy2
X-Forwarded-For: 129.78.138.66, 129.78.64.103
X-Forwarded-Host 一个事实标准,用来标识客户端在HTTP请求头中请求的原始host,因为主机名或者反向代理的端口可能与处理请求的原始服务器不同
X-Forwarded-Host: en.wikipedia.org:8080
X-Forwarded-Host: en.wikipedia.org
X-Forwarded-Proto 一个事实标准,用来标识HTTP原始协议,因为反向代理或者负载均衡器和web服务器可能使用http,但是请求到反向代理使用的是https
X-Forwarded-Proto: https
Front-End-Https 微软应用程序和负载均衡器使用的非标准header字段 Front-End-Https: on
X-Http-Method-Override 请求web应用时,使用header字段中给定的方法(通常是put或者delete)覆盖请求中指定的方法(通常是post),如果用户代理或者防火墙不支持直接使用put或者delete方法发送请求时,可以使用这个字段
X-HTTP-Method-Override: DELETE
X-ATT-DeviceId 允许更简单的解析用户代理在AT&T设备上的MakeModel/Firmware
X-Att-Deviceid: GT-P7320/P7320XXLPG
X-Wap-Profile 设置描述当前连接设备的详细信息的xml文件在网络中的位置
x-wap-profile:
http://wap.samsungmobile.com/uaprof/SGH-I777.xml
Proxy-Connection 早起HTTP版本中的一个误称,现在使用标准的connection字段
Proxy-Connection: keep-alive
X-UIDH 服务端深度包检测插入的一个唯一ID标识Verizon Wireless的客户
X-UIDH: ...
X-Csrf-Token,X-CSRFToken,X-XSRF-TOKEN 防止跨站请求伪造
X-Csrf-Token: i8XNjC4b8KVok4uw5RftR38Wgp2BFwql
X-Request-ID,X-Correlation-ID 标识客户端和服务端的HTTP请求
X-Request-ID: f058ebd6-02f7-4d3f-942e-904344e8cde5
常用标准响应头字段#####
Access-Control-Allow-Origin 指定哪些站点可以参与跨站资源共享
Access-Control-Allow-Origin: *
Accept-Patch 指定服务器支持的补丁文档格式,适用于http的patch方法
Accept-Patch: text/example;charset=utf-8
Accept-Ranges 服务器通过byte serving支持的部分内容范围类型
Accept-Ranges: bytes
Age 对象在代理缓存中暂存的秒数
Age: 12
Allow 设置特定资源的有效行为,适用方法不被允许的http 405错误
Allow: GET, HEAD
Alt-Svc 服务器使用"Alt-Svc"(Alternative Servicesde的缩写)头标识资源可以通过不同的网络位置或者不同的网络协议获取
Alt-Svc: h2="http2.example.com:443"; ma=7200
Cache-Control 告诉服务端到客户端所有的缓存机制是否可以缓存这个对象,单位是秒
Cache-Control: max-age=3600
Connection 设置当前连接和hop-by-hop协议请求字段列表的控制选项
Connection: close
Content-Disposition 告诉客户端弹出一个文件下载框,并且可以指定下载文件名
Content-Disposition: attachment; filename="fname.ext"
Content-Encoding 设置数据使用的编码类型
Content-Encoding: gzip
Content-Language 为封闭内容设置自然语言或者目标用户语言
Content-Language: en
Content-Length 响应体的字节长度
Content-Length: 348
Content-Location 设置返回数据的另一个位置
Content-Location: /index.htm
Content-MD5 设置基于MD5算法对响应体内容进行Base64二进制编码
Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ==
Content-Range 标识响应体内容属于完整消息体中的那一部分
Content-Range: bytes 21010-47021/47022
Content-Type 设置响应体的MIME类型
Content-Type: text/html; charset=utf-8
Date 设置消息发送的日期和时间
Date: Tue, 15 Nov 1994 08:12:31 GMT
ETag 特定版本资源的标识符,通常是消息摘要
ETag: "737060cd8c284d8af7ad3082f209582d"
Expires 设置响应体的过期时间
Expires: Thu, 01 Dec 1994 16:00:00 GMT
Last-Modified 设置请求对象最后一次的修改日期
Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT
Link 设置与其他资源的类型关系
Link: </feed>; rel="alternate"
Location 在重定向中或者创建新资源时使用
Location:
http://www.w3.org/pub/WWW/People.html
P3P 以P3P:CP="your_compact_policy"的格式设置支持P3P(Platform for Privacy Preferences Project)策略,大部分浏览器没有完全支持P3P策略,许多站点设置假的策略内容欺骗支持P3P策略的浏览器以获取第三方cookie的授权
P3P: CP="This is not a P3P policy! See
http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657
for more info."
Pragma 设置特殊实现字段,可能会对请求响应链有多种影响
Pragma: no-cache
Proxy-Authenticate 设置访问代理的请求权限
Proxy-Authenticate: Basic
Public-Key-Pins 设置站点的授权TLS证书
Public-Key-Pins: max-age=2592000; pin-sha256="E9CZ9INDbd+2eRQozYqqbQ2yXLVKB9+xcprMF+44U1g=";
Refresh "重定向或者新资源创建时使用,在页面的头部有个扩展可以实现相似的功能,并且大部分浏览器都支持<meta http-equiv="refresh" content="5; url=http://example.com/">
Refresh: 5; url=
http://www.w3.org/pub/WWW/People.html
Retry-After 如果实体暂时不可用,可以设置这个值让客户端重试,可以使用时间段(单位是秒)或者HTTP时间
Example 1: Retry-After: 120
Example 2: Retry-After: Fri, 07 Nov 2014 23:59:59 GMT
Server 服务器名称
Server: Apache/2.4.1 (Unix)
Set-Cookie 设置HTTP Cookie
Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1
Status 设置HTTP响应状态
Status: 200 OK
Strict-Transport-Security 一种HSTS策略通知HTTP客户端缓存HTTPS策略多长时间以及是否应用到子域
Strict-Transport-Security: max-age=16070400; includeSubDomains
Trailer 标识给定的header字段将展示在后续的chunked编码的消息中
Trailer: Max-Forwards
Transfer-Encoding 设置传输实体的编码格式,目前支持的格式: chunked, compress, deflate, gzip, identity
Transfer-Encoding: chunked
TSV Tracking Status Value,在响应中设置给DNT(do-not-track),可能的取值
"!" — under construction
"?" — dynamic
"G" — gateway to multiple parties
"N" — not tracking
"T" — tracking
"C" — tracking with consent
"P" — tracking only if consented
"D" — disregarding DNT
"U" — updated
TSV: ?
Upgrade 请求客户端升级协议
Upgrade: HTTP/2.0, HTTPS/1.3, IRC/6.9, RTA/x11, websocket
Vary 通知下级代理如何匹配未来的请求头已让其决定缓存的响应是否可用而不是重新从源主机请求新的
Example 1: Vary: *
Example 2: Vary: Accept-Language
Via 通知客户端代理,通过其要发送什么响应
Via: 1.0 fred, 1.1 example.com (Apache/1.1)
Warning 实体可能会发生的问题的通用警告
Warning: 199 Miscellaneous warning
WWW-Authenticate 标识访问请求实体的身份验证方案
WWW-Authenticate: Basic
X-Frame-Options 点击劫持保护:
deny frame中不渲染
sameorigin 如果源不匹配不渲染
allow-from 允许指定位置访问
allowall 不标准,允许任意位置访问
X-Frame-Options: deny
常用非标准响应头字段#####
X-XSS-Protection 过滤跨站脚本
X-XSS-Protection: 1; mode=block
Content-Security-Policy, X-Content-Security-Policy,X-WebKit-CSP 定义内容安全策略
X-WebKit-CSP: default-src 'self'
X-Content-Type-Options 唯一的取值是"",阻止IE在响应中嗅探定义的内容格式以外的其他MIME格式
X-Content-Type-Options: nosniff
X-Powered-By 指定支持web应用的技术
X-Powered-By: PHP/5.4.0
X-UA-Compatible 推荐首选的渲染引擎来展示内容,通常向后兼容,也用于激活IE中内嵌chrome框架插件<meta http-equiv="X-UA-Compatible" content="chrome=1" />
X-UA-Compatible: IE=EmulateIE7
X-UA-Compatible: IE=edge
X-UA-Compatible: Chrome=1
X-Content-Duration 提供音视频的持续时间,单位是秒,只有Gecko内核浏览器支持
X-Content-Duration: 42.666
Upgrade-Insecure-Requests 标识服务器是否可以处理HTTPS协议
Upgrade-Insecure-Requests: 1
X-Request-ID,X-Correlation-ID 标识一个客户端和服务端的请求
X-Request-ID: f058ebd6-02f7-4d3f-942e-904344e8cde5
像这种条目信息最佳的展示形式肯定是表格,但是markdown格式渲染出来的表格,在电脑上勉强可以看,手机根本无法阅读,主要是因为每个条目信息内容长度不一致,所以写的时候就没有使用表格,我在github上上传一个excel版本的http头字段的说明,查看起来比较清晰,本人有时查看某些头字段值时,都是用excel版本的,你可以点这里下载。
这些条目解释的来源是维基百科,本人只是简单翻译,方便快速查看,如果想了解具体条目解释,可以查看原文中对应字段的引用,原文地址在这里
做好前端开发必须对HTTP的相关知识有所了解,所以我创建了一个专题前端必备HTTP技能专门收集前端相关的HTTP知识,欢迎关注,投稿。
作者:留七七
链接:https://www.jianshu.com/p/6e86903d74f7
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
转自:https://www.jianshu.com/p/6e86903d74f7
文章浏览阅读807次。扩展。_jmap 在线分析
文章浏览阅读1.1w次。随着炎热夏季的到来,当玩游戏正爽的时候,电脑突然死机了,自动关机了,是不是有想给主机一脚的冲动呢?这个很大的原因是因为CPU温度过高导致的。很多新手玩家可能都有一个疑虑,cpu温度多少以下正常?有些说是60,有些说是70,到底多高CPU温度不会死机呢?首先我们先看看如何查看CPU的温度。下载鲁大师并安装,运行鲁大师软件,即可进入软件界面,并点击温度管理,即可看到电脑各个硬件的温度。鲁大师一般情况下..._台式机玩游戏温度多少正常
文章浏览阅读243次。Day2-打印打印打印!我终于更新了!(哭腔)一、 最简单的打印最最简单的打印语句: print(“打印内容”)注意:python是全英的,符号记得是半角下面是我写的例子:然后进入power shell ,注意:你需要使用cd来进入你保存的例子的文件夹,保存时名字应该取为xxx.py我终于知道为什么文件夹取名都建议取英文了,因为进入的时候是真的很麻烦!如果你没有进入正确的文件夹..._puthon打印任务收获
文章浏览阅读1k次。centos8问题参考CentOS 8 EOL如何切换源? - 云服务器 ECS - 阿里云_"cenerrors during download metadata for repository \"appstream"
文章浏览阅读2.7k次,点赞3次,收藏11次。SpringBoot+Maven+MabatisPlusmaven在新建springboot项目引入RELEASE版本出错maven在新建springboot项目引入RELEASE版本出错maven详解maven就是通过pom.xml中的配置,就能够从仓库获取到想要的jar包。仓库分为:本地仓库、第三方仓库(私服)、中央仓库springframework.boot:spring-boot-starter-parent:2.2.1.RELEASE’ not found若出现jar包下载不了只有两_基于微服务的在线教育平台尚硅谷
文章浏览阅读1k次。数据库备份的方法第一种:使用mysqldump结合exec函数进行数据库备份操作。第二种:使用php+mysql+header函数进行数据库备份和下载操作。下面 java 实现数据库备份的方法就是第一种首先我们得知道一些mysqldump的数据库备份语句备份一个数据库格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 --database 数据库名 ..._java数据备份
文章浏览阅读2.6k次。iOS中定时器有三种,分别是NSTimer、CADisplayLink、dispatch_source,下面就分别对这三种计时器进行说明。一、NSTimerNSTimer这种定时器用的比较多,但是特别需要注意释放问题,如果处理不好很容易引起循环引用问题,造成内存泄漏。1.1 NSTimer的创建NSTimer有两种创建方法。方法一:这种方法虽然创建了NSTimer,但是定时器却没有起作用。这种方式创建的NSTimer,需要加入到NSRunLoop中,有NSRunLoop的驱动才会让定时器跑起来。_ios nstimer
文章浏览阅读4.8k次,点赞17次,收藏51次。Linux的命令有几百个,对程序员来说,常用的并不多,考虑各位是初学者,先学习本章节前15个命令就可以了,其它的命令以后用到的时候再学习。1、开机 物理机服务器,按下电源开关,就像windows开机一样。 在VMware中点击“开启此虚拟机”。2、登录 启动完成后,输入用户名和密码,一般情况下,不要用root用户..._ls-lmore
文章浏览阅读4.1k次。1.登录MYSQL系统命令打开DOS命令框shengfen,以管理员的身份运行命令1:mysql -u usernae -p password命令2:mysql -u username -p password -h 需要连接的mysql主机名(localhost本地主机名)或是mysql的ip地址(默认为:127.0.0.1)-P 端口号(默认:3306端口)使用其中任意一个就OK,输入命令后DOS命令框得到mysql>就说明已经进入了mysql系统2. 查看mysql当中的._mysql -u user
文章浏览阅读484次。一、lvs简介和推荐阅读的资料二、lvs和keepalived的安装三、LVS VS/DR模式搭建四、LVS VS/TUN模式搭建五、LVS VS/NAT模式搭建六、keepalived多种real server健康检测实例七、lvs持久性工作原理和配置八、lvs数据监控九、lvs+keepalived故障排除一、LVS简介和推荐阅读的资料 学习LVS+Keepalived必须阅读的三个文档。1、 《Keepalived权威指南》下载见http://..._this is the redundant configuration for lvs + keepalived server itself
文章浏览阅读795次,点赞20次,收藏15次。AIDL是使用bind机制来工作。java原生参数Stringparcelablelist & map 元素 需要支持AIDL其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。下图是我进阶学习所积累的历年腾讯、头条、阿里、美团、字节跳动等公司2019-2021年的高频面试题,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。
文章浏览阅读248次。承接:数据基础02