十分钟了解HTTP协议
概念
HTTP(Hypertext Transfer Protocol,超文本传输协议)是TCP/IP协议的应用(封装)。
HTTP协议是单向通讯,无状态,主要应用于B/S模型的网络软件,客户端一(多)个请求对应服务端一(多)个响应(客户端→服务端)。
HTTP协议传输的资源不仅仅是文本,还可以是图片,音视频等资源,并且通过URL(Uniform Resource Locators,统一资源定位器)来定位资源位置。
版本
HTTP 1.0: 短连接,一个请求响应后就断开连接。
HTTP 1.1 :长连接,多个请求响应后保持连接。
HTTP 2.0 :长连接,一个连接发起多个请求响应。特点是多路复用(压缩请求头,SPDY协议),传输二进制文件流,利于服务端推送消息。
工作原理
1. 用户打开Web浏览器,并访问Web站点。
2. Web浏览器(客户端)向Web服务端发出HTTP请求。
3. Web服务端根据收到HTTP请求后,返回对应的结果给Web浏览器。
请求方式
GET方式:在URL带参数请求,可缓存请求(适用于信息检索查询)
POST方式:在HTTP消息体带参数请求,可缓存请求,相同请求不会覆盖。(适用于表单提交)
PUT方式:在HTTP消息体带参数请求。不缓存请求,相同请求会以最后一次请求覆盖。(适用于表单修改提交)
DELETE方式:在URL带参数请求,不缓存请求。(适用于删除指定的资源)
PS:其他请求方式不常用,所以就不列举说明。
请求消息体
响应消息体
状态码
200:服务器成功处理了请求。(请求随之响应)
206:服务器成功处理部分请求。(针对下载软件断点续传功能)
301:被请求的资源已永久移动到新位置。(会传递传递页面权重到新的url上)
302:被请求的资源已临时移动到新位置。(不会传递传递页面权重到新的url上)
304:无修改,客户的缓存资源是最新的,要客户端使用缓存。(针对缓存服务器系统)
305:用户代理,需要代理才能访问。(针对vpn)
400:客户端请求错误。(提交的数据不正确,服务器无法理解)
403:服务器已经理解请求,但是拒绝执行它。(禁止某些地区用户访问)
404:服务器无法找到所请求的URL。(该文件找不到)
501:服务器遇到一个错误,使其无法对请求提供服务。(服务器出错)
503:服务器目前无法为请求服务服务。(服务器维护中)
504:服务器超时。(服务器没有及时响应)
505:服务器http与客户端http协议不一致。(针对http协议版本问题)
PS:其他状态码不常用,所以就不列举说明。
补充:关于web服务器的一些理解。http服务器=web服务器
Apache是一个http服务器,不是web应用服务器。所以Apache不能直接支持jsp、php、asp.net。需要额外使用web应用服务器支持,也就是通过CGI、FastCGI、ISAPI等其他接口进行处理。(比如:Tomcat)
Apache之所以能支持解析php,是因为Apcahe是一个模块化的服务器,可以安装支持php模块,所以Apache就充当php服务器。(大多数的人可能喜欢使用WAMP一件套来开发,误认为Apache就是php服务器)
十分钟了解HTTP协议的更多相关文章
- 十分钟了解HTTPS协议
概念 HTTP协议上添加一层SSL/TLS协议进行加密,保证用户与web站点之间的数据传输时密文,而不是明文. PS:HTTPS协议 = HTTP协议 + SSL(Secure Sockets Lay ...
- 十分钟看懂AES加密
十分钟看懂AES加密算法 今天看了Moserware的<A Stick Figure Guide to the Advanced Encryption Standard(AES)>收获了不 ...
- 如何消灭飞机的“黑色十分钟”,AI来帮忙
近年来,“AI的应用和落地”逐渐成了具化的关键词,它和很多事物很多行业结合在一起,形成了奇妙的“化学反应”.例如,在日常生活中,AI可以推送我们喜欢的新闻或视频,可以在拍照的时候识别场景提升照片的美感 ...
- 【NLP】十分钟快览自然语言处理学习总结
十分钟学习自然语言处理概述 作者:白宁超 2016年9月23日00:24:12 摘要:近来自然语言处理行业发展朝气蓬勃,市场应用广泛.笔者学习以来写了不少文章,文章深度层次不一,今天因为某种需要,将文 ...
- 十分钟轻松让你认识ASP.NET MVC6
这篇文章说明下如何在普通编辑器下面开发mvc6应用程序. 上篇文章: 十分钟轻松让你认识ASP.NET 5(MVC6) 首先安装mvc6的nuget包: 可以看到在project.json文件中添加了 ...
- 十分钟轻松让你认识ASP.NET 5(MVC6)
ASP.NET 5差不多快发布了.自己也学习了有两个月了.今天给没有接触asp.net 5的同学写一个简单地十分钟教程,教你认识一下asp.net 5. 1.安装kvm 首先,你需要以管理员权限打开c ...
- 十分钟了解分布式计算:Google Dataflow
介绍 Google Cloud Dataflow是一种构建.管理和优化复杂数据处理流水线的方法,集成了许多内部技术,如用于数据高效并行化处理的Flume和具有良好容错机制流处理的MillWheel.D ...
- 十分钟了解分布式计算:GraphX
GraphX原型论文 GraphX是Spark中用于图(e.g., Web-Graphs and Social Networks)和图并行计算(e.g., PageRank and Collabora ...
- 快速入门:十分钟学会Python
初试牛刀 假设你希望学习Python这门语言,却苦于找不到一个简短而全面的入门教程.那么本教程将花费十分钟的时间带你走入Python的大门.本文的内容介于教程(Toturial)和速查手册(Cheat ...
随机推荐
- Java基础语法(练习)
Java基础语法 今日内容介绍 u 循环练习 u 数组方法练习 第1章 循环练习 1.1 编写程序求 1+3+5+7+……+99 的和值. 题目分析: 通过观察发现,本题目要实现的奇数(范围1-100 ...
- 小技巧:在向导式页面设计中使用hidden型输入可以避免session的使用
在向导式页面设计中使用hidden型输入可以避免session的使用,从而减小内存开支. 在表单中使用隐藏输入类型<input type="hidden" name=&quo ...
- 环境变量—《linux命令行与shell脚本编程大全》
环境变量部分: 1.查看全局变量:printenv/env 2.显示单个环境变量的值:echo 如echo $HOME 3.显示为某个特定进程设置的所有环境变量:set 4.设置全局变量:创建局部环境 ...
- 关于学习Lisp的一点思考
以前读<黑客与画家>,其中对Lisp语言的赞美和推崇,让我燃起学习Lisp语言的强烈冲动,但很快发现在实际工作中应用的场景很少,出于功利心最终放弃了.直到上周未在家里读完了<大教堂与 ...
- UVALive 4794 Sharing Chocolate(状压,枚举子集)
n的规模可以状压,f[x][y][S]表示x行,y列,S集合的巧克力能否被切割. 预处理出每个状态S对应的面积和sum(S),对于一个合法的状态一定满足x*y=sum(S),实际上只有两个变量是独立的 ...
- 团队作业——项目Alpha版本发布
---恢复内容开始--- https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1 https://edu.cnblogs.com ...
- python_97_类的继承2
# 经典类与新式类差别主要体现在多继承上 #多继承是从左到有 class People():#经典类 #class People(object):#新式类 def __init__(self,name ...
- iOS与JS相互传值与交互
JavaScriptCore是webkit的一个重要组成部分,主要是对JS进行解析和提供执行环境.iOS7后苹果在iPhone平台推出,极大的方便了我们对js的操作.我们可以脱离webview直接运行 ...
- cocos2d-x之CCCardinalSplineBy
CCCardinalSplineBy概念 这个类是样条曲线动作,其创建函数CCCardinalSplineBy::create(float duration, cocos2d::CCPointArra ...
- 性能优化之MySQL优化(慕课)
MySQL数据库优化 1-1MySQL优化简介 数据库优化的目的 避免出现页面访问错误 由于数据库连接timeout产生5XX错误 由于慢查询造成页面无法加载 由于阻塞造成数据无法提交 增加数据库的稳 ...