学点HTTP知识
不学无术
又一次感觉到不学无术,被人一问Http知识尽然一点也没答上来,丢人丢到家了啊。平时也看许多的技术文章,为什么到了关键时刻就答不上来呢?
确实发现一个问题,光看是没有用的,需要实践。看别人说的头头是道自己也觉得理解了,但发现再让自己复述一遍可能完全就答不上来。这就是因为看别人的文章更像看小说,脑子里跟着作者的思路感觉好像挺懂的,其实也就是过眼云烟。所以想要学好技术
- 一方面是要看别人的总结,比如文章、书、源代码
- 然后就是要自己去总结,比如写写博客,跑跑书里面的代码,这样可以加深理解。
- 最后就是要去用,特别是在工作中。如果一项技能已经用的非常熟练了想要忘都难。
为了让自己对HTTP知识多一点印象,写一篇博客吧。由浅入深,慢慢来。
先简单认识http
HTTP是超文本传输协议,这个协议是应用层协议。我的理解是在服务器生成一段文本,在网络上传输,客户端可以对其解析成视图并提供交互。
http是由请求与响应构成,在设计时是无状态协议,这样每一次的操作基本就是客户端发起请求,服务端返回响应。
Http请求与响应都包含:请求行、消息头和消息体。
常见的Header
说起header不复杂,但细细一看蛮多学问在里面,只不过确实有点多,主要是还是先关注一些常见的吧。
通用头域
- Cache-Control:指定请求和响应遵循的缓存机制
- Connection:keep-alive:保持与服务器的TCP连接
- Date:消息发送的日期时间
- Pragma:用来包含实现特定的指令,最常用的是Pragma:no-cache。在HTTP/1.1协议中,它的含义和Cache-Control:no-cache相同。
- Transfer-Encoding:chunked:分块编码
Request Header
- Request URL:请求的URL
- Request Method:请求的方法(OPTIONS、HEAD、GET、POST、PUT、DELETE、TRACE、CONNECT、PATCH)
- Remote Address:远程服务器的地址
- Accept:指定客户端接收的MIME类型(text/html,application/xhtml+xml,application/xml)
- Accept-Encoding:指定客户端接收的编码,通常用于指定压缩算法(gzip, deflate, sdch)
- Accept-Language:指定客户端接收的语言(zh-CN,zh)
- Accept-Charset:指定客户端接收的字符集(gb2312,uft-8)
- Cookie:客户端cookie信息
- Host:请求的域
- User-Agent:发起请求的用户信息,操作系统、浏览器版本等
- If-Modified-Since:服务器上一次修改的时间
response header
- Content-Encoding:响应包的编码及压缩算法(gzip)
- Content-Type:响应包的资源类型(text/html; charset=utf-8)
- Expires:过期时间
- Last-Modified:最后修改时间
常见的状态码
- 200:请求已成功
- 201:请求已经被实现,而且有一个新的资源已经依据请求的需要而建立,且其 URI 已经随Location 头信息返回
- 301/302:重定向
- 304:客户端请求的资源未修改
- 400:错误的请求包
- 404:请求失败,指定资源未找到
- 500:服务器内部错误,通常是服务器出错了没法返回响应包
学点HTTP知识的更多相关文章
- 编码(1)学点编码知识又不会死:Unicode的流言终结者和编码大揭秘
学点编码知识又不会死:Unicode的流言终结者和编码大揭秘 http://www.freebuf.com/articles/web/25623.html 如果你是一个生活在2003年的程序员,却不了 ...
- Java多线程 编写三各类Ticket、SaleWindow、TicketSaleCenter分别代表票信息、售票窗口、售票中心。 售票中心分配一定数量的票,由若干个售票窗口进行出售,利用你所学的线程知识来模拟此售票过程。
package com.swift; import java.util.ArrayList; import java.util.HashMap; import java.util.List; impo ...
- 使用Code First建模自引用关系笔记 asp.net core上使用redis探索(1) asp.net mvc控制器激活全分析 语言入门必学的基础知识你还记得么? 反射
使用Code First建模自引用关系笔记 原文链接 一.Has方法: A.HasRequired(a => a.B); HasOptional:前者包含后者一个实例或者为null HasR ...
- 在阅读sqlmap源码时学到的知识--检查运行环境
最近在读sqlmap的源码,懵懵懂懂中页大约学到了一些知识(说给自己听的话:由此可见,所谓的能够解决所有遇到问题的python水平,只能说明你遇见的都是简单的需求....),老规矩,在这里写一下,一则 ...
- 每天学点管理学知识——情绪ABC理论
什么是ABC理论 ABC理论(ABC Theory of Emotion)是由美国心理学家埃利斯创建的.就是认为激发事件A(activating event 的第一个英文字母)只是引发情绪和行为后果C ...
- iOS狂暴之路---iOS的第一个应用中能学到哪些知识
一.前文回顾 在之前已经介绍了 iOS的学习路线图,因为中间遇到一些Android开发问题,所以就耽搁了一段时间,那么接下来的这段时间我们将继续开始iOS的狂暴之路学习,按照国际惯例,第一个应用当然是 ...
- 由“如何取得CPU的温度与型号”学到的知识延伸WQL
[Base]:WMI是一项核心的 Windows 管理技术:用户可以使用 WMI 管理本地和远程计算机.WQL就是 WMI 中的查询语言,翻译成中文好像可以成为 Windows 管理规范查询语言. 1 ...
- 编写dimgr脚本学到的知识及技巧
编写dimgr是为了管理手机上的镜像,在此总结下过程中学到的知识及技巧(不讨论具体用法). 参数处理 以往处理脚本参数直接用循环加判断语句,若是脚本只有简单参数,这无疑是简便可行的方法.但当需要处理复 ...
- 学点编码知识又不会死:Unicode的流言终结者和编码大揭秘
如果你是一个生活在2003年的程序员,却不了解字符.字符集.编码和Unicode这些基础知识.那你可要小心了,要是被我抓到你,我会让你在潜水艇里剥六个月洋葱来惩罚你. 这个邪恶的恐吓是Joel Spo ...
随机推荐
- 自定义基于 VLC 的视频播放器
前言(蛋疼的背景故事) 前段时间,接了一个小项目,有个需求是要在系统待机一段时间以后,循环播放 MV(类似于 Windows 系统的屏幕保护). 听到这个需求,我首先想到的是 MediaPlayer ...
- Angular2入门系列教程3-多个组件,主从关系
上一篇 Angular2项目初体验-编写自己的第一个组件 好了,前面简单介绍了Angular2的基本开发,并且写了一个非常简单的组件,这篇文章我们将要学会编写多个组件并且有主从关系 现在,假设我们要做 ...
- UWP中实现自定义标题栏
UWP中实现自定义标题栏 0x00 起因 在UWP开发中,有时候我们希望实现自定义标题栏,例如在标题栏中加入搜索框.按钮之类的控件.搜了下资料居然在一个日文网站找到了一篇介绍这个主题的文章: http ...
- 04.LoT.UI 前后台通用框架分解系列之——轻巧的弹出框
LOT.UI分解系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#lotui LoT.UI开源地址如下:https://github.com/du ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(80)-自由桌面
系列目录 前言 这次我们来做一个有趣的事情,有朋友跟做了很远,找我要自由桌面的代码,这次我们将演示自由桌面的代码. 自由桌面:用户可以随意增删改桌面的布局.个数(只留自己需要看到的数据),这次纯属Ea ...
- Android数据加密之SHA安全散列算法
前言: 对于SHA安全散列算法,以前没怎么使用过,仅仅是停留在听说过的阶段,今天在看图片缓存框架Glide源码时发现其缓存的Key采用的不是MD5加密算法,而是SHA-256加密算法,这才勾起了我的好 ...
- 用神奇的currentColor制作简洁的颜色动画效果
先上一个兼容性总结图:老版本ie可以直接用复杂方法了,套用某表情包的话: 2016年了,做前端你还考虑兼容IE6?你这简直是自暴自弃! 好了,知道了兼容性,我们可以放心的使用了. 在CSS3中扩展了 ...
- [原] KVM虚拟机网络闪断分析
背景 公司云平台的机器时常会发生网络闪断,通常在10s-100s之间. 异常情况 VM出现问题时,表现出来的情况是外部监控系统无法访问,猜测可能是由于系统假死,OVS链路问题等等.但是在出现网络问题的 ...
- MSYS2——Windows平台下模拟linux环境的搭建
最近从MSYS1.0迁移到了MSYS2.0,简单讲,MSYS2.0功能更强大,其环境模拟更加符合linux.虽然本身来自cygwin,但其集成了pacman软件管理工具,很有linux范,并且可以直接 ...
- ActiveRecord模式整理
DAO Data Access Object,数据访问对象 DAO是一个软件设计的指导原则,在核心J2EE模式中是这样介绍DAO模式的:为了建立一个健壮的J2EE应用,应该将所有对数据源的访问操作抽象 ...