热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

http协议之版本差异(2)

—————————————HTTP1.0HTTP1.1——————————————建立连接方面HTTP1.0每次请求都需要建立新的TCP连接,连接不能复用。HTTP1.1新

—————————————HTTP1.0/HTTP1.1——————————————

 

建立连接方面

  HTTP/1.0 每次请求都需要建立新的TCP连接,连接不能复用。HTTP/1.1 新的请求可以在上次请求建立的
TCP连接之上发送,连接可以复用。优点是减少重复进行TCP三次握手的开销,提高效率。注意:在同一个TCP连
接中,新的请求需要等上次请求收到响应后,才能发送。

 

HTTP请求方法
  根据HTTP标准,HTTP请求可以使用多种请求方法。
  HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。
  HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

 

请求头信息
  请求头信息是由一个个头域组成。
  每个头域由一个域名、冒号(:)和域值三部分组成。域名是大小写无关的,域值前可以添加任何数量的空格
符,头域可以被扩展为多行,在每行开始处,使用至少一个空格或制表符。
例如:

Host: 192.168.1.104:8888

 

下面实例是一点典型的使用GET来传递数据的实例:
客户端请求:

GET /hello.txt HTTP/1.1 User‐Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3 Host: www.example.com Accept‐Language: en, mi

 

服务器响应消息

HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。

 

 

状态码

  当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所
在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。
HTTP状态码的英文为HTTP Status Code。
下面是常见的HTTP状态码:

  • 200 ­ 请求成功
  • 301 ­ 资源(网页等)被永久转移到其它URL
  • 404 ­ 请求的资源(网页等)不存在
  • 500 ­ 内部服务器错误

HTTP状态码分类:

  HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。
HTTP状态码共分为5种类型:

 

HTTP状态码列表:

 

响应头信息
HTTP请求头提供了关于请求,响应或者其他的发送实体的
信息。


 

get响应

TTP/1.1 200 OK\r\n Server: Tengine\r\n Content‐Type: application/octet‐stream\r\n Content‐Length: 9568\r\n Connection: keep‐alive\r\n Date: Wed, 14 Sep 2016 09:06:22 GMT\r\n Last‐Modified: Wed, 14 Sep 2016 09:05:01 GMT\r\n Timing‐Allow‐Origin: *, *\r\n Accept‐Ranges: bytes\r\n Via: cache1.l2et15[0,3040,H], cache10.l2et15[1,0], cache5.cn463[0,2000,H], cache5.cn463[0,0]\r\n Age: 3\r\n X‐Cache: HIT TCP_MEM_HIT dirn:‐2:‐2\r\n X‐Swift‐SaveTime: Wed, 14 Sep 2016 09:06:22 GMT\r\n X‐Swift‐CacheTime: 10\r\n EagleId: 9dff8b4514738439859887791e\r\n \r\n

 

使用浏览器发送一个get请求如:

http://192.168.1.104:8888?username=wenong&passwd=123456

 

GET/POST对比:

1)Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据。
2)Get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,
而各个变量之间使用“&”连接;Post是将表单中的数据放在的数据体中,按照变量和值相对应的方式,传递到action
所指向URL
3)Get是不安全的,因为在传输过程,数据被放在请求的URL中,而如今现有的很多服务器、代理服务器或者
用户代理都会将请求URL记录到日志文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。
另外,用户也可以在浏览器上直接看到提交的数据,一些系统内部消息将会一同显示在用户面前。Post的所有操作
对用户来说都是不可见的。
4)Get传输的数据量小,这主要是因为受URL长度限制;而Post可以传输大量的数据,所以在上传文件只能
使用Post

 

表单方式提交提GET请求,例如web服务器中的index.html中填写:

<HTML> <BODY> <FORM ACTION="color.cgi" METHOD="GET"> Enter a color: <INPUT TYPE="text" NAME="color"> <INPUT TYPE="submit"> FORM> BODY> HTML>

 

GET请求

GET /color.cgi?color= HTTP/1.1 Host: 192.168.1.104:8888 Connection: keep‐alive Upgrade‐Insecure‐Requests: 1 User‐Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Referer: http://192.168.1.104:8888/ Accept‐Encoding: gzip, deflate, sdch Accept‐Language: zh‐CN,zh;q=0.8

 

表单方式提交POST提请求,例如web服务器中的index.html中填写:

<HTML> <BODY> <FORM ACTION="color.cgi" METHOD="POST"> Enter a color: <INPUT TYPE="text" NAME="color"> <INPUT TYPE="submit"> FORM> BODY> HTML>

 

POST请求

POST /color.cgi HTTP/1.1 Host: 192.168.1.104:8888 Connection: keep‐alive Content‐Length: 10 Cache‐Control: max‐age=0 Origin: http://192.168.1.104:8888 Upgrade‐Insecure‐Requests: 1 User‐Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36 Content‐Type: application/x‐www‐form‐urlencoded Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Referer: http://192.168.1.104:8888/ Accept‐Encoding: gzip, deflate Accept‐Language: zh‐CN,zh;q=0.8 color=read

 


推荐阅读
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • 基于域名、端口和IP的虚拟主机构建方案
    本文探讨了在单台物理服务器上构建多个Web站点的虚拟主机方案,详细介绍了三种主要的虚拟主机类型:基于域名、基于IP地址和基于端口的虚拟主机。每种类型的实现方式及其优缺点均进行了深入分析,为实际应用提供了全面的技术指导。 ... [详细]
  • Nginx入门指南:从零开始掌握基础配置与优化技巧
    Nginx入门指南:从零开始掌握基础配置与优化技巧 ... [详细]
  • 在ElasticStack日志监控系统中,Logstash编码插件自5.0版本起进行了重大改进。插件被独立拆分为gem包,每个插件可以单独进行更新和维护,无需依赖Logstash的整体升级。这不仅提高了系统的灵活性和可维护性,还简化了插件的管理和部署过程。本文将详细介绍这些编码插件的功能、配置方法,并通过实际生产环境中的应用案例,展示其在日志处理和监控中的高效性和可靠性。 ... [详细]
  • 深入探索HTTP协议的学习与实践
    在初次访问某个网站时,由于本地没有缓存,服务器会返回一个200状态码的响应,并在响应头中设置Etag和Last-Modified等缓存控制字段。这些字段用于后续请求时验证资源是否已更新,从而提高页面加载速度和减少带宽消耗。本文将深入探讨HTTP缓存机制及其在实际应用中的优化策略,帮助读者更好地理解和运用HTTP协议。 ... [详细]
  • 如何利用Java 5 Executor框架高效构建和管理线程池
    Java 5 引入了 Executor 框架,为开发人员提供了一种高效管理和构建线程池的方法。该框架通过将任务提交与任务执行分离,简化了多线程编程的复杂性。利用 Executor 框架,开发人员可以更灵活地控制线程的创建、分配和管理,从而提高服务器端应用的性能和响应能力。此外,该框架还提供了多种线程池实现,如固定线程池、缓存线程池和单线程池,以适应不同的应用场景和需求。 ... [详细]
  • 在基于.NET框架的分层架构实践中,为了实现各层之间的松散耦合,本文详细探讨了依赖注入(DI)和控制反转(IoC)容器的设计与实现。通过合理的依赖管理和对象创建,确保了各层之间的单向调用关系,从而提高了系统的可维护性和扩展性。此外,文章还介绍了几种常见的IoC容器实现方式及其应用场景,为开发者提供了实用的参考。 ... [详细]
  • 本文详细介绍了在MySQL中如何高效利用EXPLAIN命令进行查询优化。通过实例解析和步骤说明,文章旨在帮助读者深入理解EXPLAIN命令的工作原理及其在性能调优中的应用,内容通俗易懂且结构清晰,适合各水平的数据库管理员和技术人员参考学习。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • ### 优化后的摘要本学习指南旨在帮助读者全面掌握 Bootstrap 前端框架的核心知识点与实战技巧。内容涵盖基础入门、核心功能和高级应用。第一章通过一个简单的“Hello World”示例,介绍 Bootstrap 的基本用法和快速上手方法。第二章深入探讨 Bootstrap 与 JSP 集成的细节,揭示两者结合的优势和应用场景。第三章则进一步讲解 Bootstrap 的高级特性,如响应式设计和组件定制,为开发者提供全方位的技术支持。 ... [详细]
  • 如何优化MySQL数据库性能以提升查询效率和系统稳定性 ... [详细]
  • Amoeba 通过优化 MySQL 的读写分离功能显著提升了数据库性能。作为一款基于 MySQL 协议的代理工具,Amoeba 能够高效地处理应用程序的请求,并根据预设的规则将 SQL 请求智能地分配到不同的数据库实例,从而实现负载均衡和高可用性。该方案不仅提高了系统的并发处理能力,还有效减少了主数据库的负担,确保了数据的一致性和可靠性。 ... [详细]
  • 在CICS应用环境中,众多客户端通过网络与CICS服务器进行连接。系统管理员可以通过CICS系统交易CEMT查询当前连接的客户端信息。然而,在非客户端模式下,识别用户连接并解决信息获取错误的问题变得更为复杂。本文将探讨如何在CICS服务器端准确识别非客户端模式的用户连接,并提供有效的解决方案,以确保系统的稳定性和数据的准确性。此外,还将介绍一些常用的诊断工具和技术,帮助管理员快速定位和解决问题。 ... [详细]
  • 在 PHP 中使用 Restler 3 框架为不同方法添加身份验证时,可以根据方法参数的特定值来限制访问。例如,在 `Simple.php` 文件中定义的 `Simple` 类中,可以通过检查 `$name` 参数的值来决定是否允许调用 `item` 方法。这种细粒度的认证机制可以提高系统的安全性和灵活性。具体实现方式包括在方法内部进行条件判断,并结合框架提供的认证工具来实现访问控制。 ... [详细]
  • 本文详细探讨了MySQL并发参数的优化与调整方法,旨在帮助读者深入了解如何通过合理配置这些参数来提升数据库性能。文章不仅介绍了常见的并发参数及其作用,还提供了实际操作中的调整策略和最佳实践,适合希望提高数据库管理技能的技术人员阅读。 ... [详细]
author-avatar
明恋夏日2
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有