协议就是交互双方协商好要遵守的规范,打个不恰当的比方,就好像交谈双方约定要使用的同一种语言。如果我讲英文,你讲中文,大家都相互听不懂,交流那就得嗝屁了。

HTTP协议就是需要交互的客户端(通常是浏览器)和http服务器协商共同说的一种语言。HTTP协议是基于文本的,所以,我们可以不借助浏览器或者其它http客户端,只使用telnet与http服务器相连,然后发送一个基于http请求规范的文本,服务器照样能明白我们想要什么。

HTTP的请求报文和响应报文都是由三部分组成:开始行,首部行,实体主体。本文我们主要是熟悉下首部行常见的一些headers。

HTTP headers分为以下四种类型:
- Entity: 实体主体(entity body)或资源的元信息
- General: 适用request和reponse信息
- Request: 浏览器或者其它客户端向服务器发送的请求
- Response: 服务器针对请求的响应

常见的适用Request的首部:
- Accept: 指定接受的Internet媒体类型
- Accept-Charset: 指定接受的字符编码
- Accept-Encoding: 指定接受的数据格式转换,比如压缩
- Accept-Language: 指定接受的自然语言
- Authorization: 为请求资源需提供的验证信息
- Expect: 表示客户端要求的服务器执行的特殊动作
- From: 发送请求的人的email
- Host: 指定资源所在的Internet host和端口号
- If-Match,If-None-Match: 与entity tags配合的缓存机制(客户端缓存)
- If-Modified-Since, If-Unmodified-Since: 与指定时间配合的缓存机制
- Proxy-Authorization: 向代理提供身份
- Referer: 获取请求请求URI的地址
- User-Agent: 产生请求的user agent或客户端信息

常见的适用Response的首部:
- Accept-Ranges: 服务器接受的资源切割的类型范围,如Accept-Ranges: bytes
- Age: 原始服务器响应产生的时间
- ETag: 基于缓存目为请求的资源(variant)生成的类似对象id的entity tag
- Location: 资源重定向的目的地
- Proxy-Authenticate: 表明需要验证信息来获取资源
- Retry-After: 表明服务unavailable的时间
- Server: 服务器处理请求的软件信息

常见的适用Response和Request的首部:
- Cache-Control: 指定在request/response链上所有缓存机制必须遵循的指令
- Connection: 表明某一特定连接需要的动作,设置后可防止代理再次利用此连接交互
- Date: 信息产生的时间
- Pragma: 在request/response链原则上要遵循的指令
- Upgrade: 客户端偏向使用的协议,如果服务器支持这种协议,则转换有此种协议交互
- Warning: 未反映在正常信息里的额外信息

常见的适用于Entity的首部:
- Allow: 允许的对资源的操作,例如Allow: GET, HEAD, PUT
- Content-Encoding: 表明针对entity进行的额外的数据转换,比如压缩
- Content-Language: entity所适用的语言
- Content-Length: entity-body大小
- Content-Location: 如果entity内容来自其它URI,指明该URI的位置
- Content-Type: 指明Internet媒体类型,经常还会包括字符编码类型
- Content-Range: 资源切割的位置
- Expires: 表明响应过期的时间
- Last-Modified: 最后修改时间

参考链接:
- [Quick reference to HTTP headers](http://www.cs.tut.fi/~jkorpela/http.html)

常见的HTTP Headers的更多相关文章

  1. 转:什么是 HTTP Headers?

    什么是HTTP Headers HTTP是“Hypertext Transfer Protocol”的所写,整个万维网都在使用这种协议,几乎你在浏览器里看到的大部分内容都是通过http协议来传输的,比 ...

  2. http headers

    什么是HTTP Headers HTTP是“Hypertext Transfer Protocol”的所写,整个万维网都在使用这种协议,几乎你在浏览器里看到的大部分内容都是通过http协议来传输的,比 ...

  3. provisional headers are shown 知多少

    前言 请求里面provisional headers are shown(显示临时报头) 出现的情况很多,但原因是多样的. 如果你去直接匹配关键字搜索,得到的结果可能与你自己的情况大相径庭. 网上大部 ...

  4. 【转】provisional headers are shown 知多少

    前言 请求里面provisional headers are shown(显示临时报头) 出现的情况很多,但原因是多样的.如果你去直接匹配关键字搜索,得到的结果可能与你自己的情况大相径庭.网上大部分都 ...

  5. HTTP Header 入门详解

    什么是HTTP Headers HTTP是"Hypertext Transfer Protocol"的所写,整个www都在使用这种协定,几乎你在流览器里看到的大部分内容都是通过ht ...

  6. GET、POST详解 --转自http://hi.baidu.com/richarwu/item/bd43633a6ba62986b611dbcd

    HTTP Get,Post请求详解 请求类型 三种最常见的请求类型是:GET,POST 和 HEAD GET:获取一个文档 大部分被传输到浏览器的html,images,js,css, … 都是通过G ...

  7. 【转载】浏览器缓存详解:expires cache-control last-modified

    https://www.cnblogs.com/caiyanhu/p/6931624.html 下面的内容展示了一个常见的 Response Headers,这些 Headers 要求客户端最多缓存 ...

  8. PWA渐进式web应用

    PWA(Progressive Web App)是一种理念,使用多种技术来增强web app的功能,可以让网站的体验变得更好,能够模拟一些原生功能,比如通知推送.在移动端利用标准化框架,让网页应用呈现 ...

  9. 【http】四种常见的 POST 提交数据方式

    来源:http://www.cnblogs.com/aaronjs/p/4165049.html HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS.GET.HEAD.POST.PUT ...

随机推荐

  1. 认识VTK工作原理

    VTk通过数据流实现变信息为图形数据的. 数据流一般为:source-filter--mapper--actor--render--renderwindow--interactor. 要理解工作原理, ...

  2. rqnoj343 mty的考验

    题目描述 啊!几经周折.mty终于找到了他的偶像.他就是….fyc! 可是fyc这样的高级人士可不喜欢一个人总是缠着他.于是他出了一道难题想考考mty.fyc有几个手下:陈乐天,舒步鸡,胡巍……现在f ...

  3. Development of large-scale site performance optimization method from LiveJournal background

    A LiveJournal course of development is a project in the 99 years began in the campus, a few people d ...

  4. VC调试闪退解决办法

    在VC2010调试或执行EXE文件时,程序运行结束后自动退出了,想看到打印 可以采用几种方法: 1.按ctrl+F5只执行不调试 2.在cmd中手动调用 而不是直接点 3.加入getchar  #in ...

  5. Chrome 用户数据配置文件夹保存路径在哪?(Mac OS X/Windows/Linux)

    在重装系统之前都想要对 Chrome 中的数据进行备份,以能够在重装系统后恢复这些数据.但是除了一些玩 Chrome 很长时间的用户,鲜有人知道 Chrome 的用户数据到底保存在什么地方.如果你也有 ...

  6. BZOJ2006——[NOI2010]超级钢琴

    1.题意:给一个序列,让你取出k个不同的区间,要求长度在之间,问所有区间和的最大值 2.分析:这道题拿过来就能知道是要拿出前k个最大的区间,我们思考最暴力的做法,就是把这个所有的区间枚举出来算,取出前 ...

  7. 无需activity获得屏幕尺寸

    原文地址:http://blog.sina.com.cn/s/blog_4c277ad30100yfqo.html 客户需求需要增加对手机尺寸的读取 于是找了两个方法 第一种:通过activity引用 ...

  8. Python之路,Day4 - Python基础4

    一.函数 (一)背景提要 现在老板让你写一个监控程序,监控服务器的系统状况,当cpu\memory\disk等指标的使用量超过阀值时即发邮件报警,你掏空了所有的知识量,写出了以下代码 1 2 3 4 ...

  9. eclipse中如何安装插件ADT及SDK工具

    1.如何在eclipse中安装ADT 首先下载ADT Plugin 下载地址: http://tools.android-studio.org/index.php/adt-bundle-plugin ...

  10. iOS开发UI篇—CALayer简介

    iOS开发UI篇—CALayer简介   一.简单介绍 在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮.一个文本标签.一个文本输入框.一个图标等等,这些都是UIView. 其实 ...