HTTP的结构主要包括下面几个要点:
请求行与状态
通用信息
请求头
响应头
实体头
扩展头
HTTP的版本主要有1.0,1.1 和更高版本
1.1 及以上版本允许在一个TCP连接上传送多个HTTP协议,1.0能
1.1 及以上版本多个请求和响应可以重叠,1.0不能
1.1 增加了很多的请求头和响应头
请求消息的结构
一个请求行,若干小心头,以及实体内容,其中的一些消息头和实体内容是可选的,消息头和实体内容需要空行隔开。
举例:
GET/music/musicTest.html HTTP/1.1 -<------请求行
Accept:*/* -<------消息头
Accept-Language: en-us -<------消息头
Connection: Keep-Alive -<------消息头
Host: LocatHost -<------消息头
Referer: http://localhost/test.jsp -<------消息头
User-Agent: Mozilla/4.0 -<------消息头
Accept-Encoding: gzip,deflate -<------消息头
-<------一个空行
响应消息的结构
一个状态行,若干个消息头,以及实体内容,其中的一些信息头和实体内容都是可选的,消息头和实体内容需要用空格隔开
举例:
HTTP/1.1 200 OK -<------状态行
Server: Microsoft-IIS/5.0 -<------消息头
Date: Thu,15 Jul 2012 05:14:32 GMT -<------消息头
Content-Length: 4500 -<------消息头
Content-Length: text/html -<------消息头
Cache-control: private -<------消息头
-<------一个空行
<HTML> -<------实体内容(网页将显示的内容)
<BODY>
。。。。。
注意点:
一个使用GET 方式的请求消息中不能包含实体内容,只有使用POST,PUT或者DELETE方式的请求才可以包括实体内容
HTTP 消息头
使用消息头可以实现HTTP客户机与服务器之间的条件请求和应答,消息头相当与服务器与浏览器之间的一些暗号请求
消息头的格式: 头字段,冒号,空格,值,回车
许多请求头字选允许客户端在值部分指定多个可接受的选项,多个选项之间用头号隔开
例如:Accept-Encoding: gzip,compress
有些头字段可以多次出现,例如,响应消息中可包含多个"Warning"
请求行
格式:请求方式 资源路径 HTTP版本号〈CRLF〉
举例:GET /test.html Http/1.1
请求方式:Post Head,Options,Delete,Trace.Put,Get状态行
格式:HTTP版本号 状态码 原因描述 〈CRLF〉
举例: HTTP/1.1 200 OK
访问方式: windows下 http 1.0(启动一个web服务器例如tomcat)
cmd进入
telnent localhost 8080
输入ctrl+]+回车
输入GET /工程名称/test.html http/1.0
2次回车
返回下面:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
ETag: W/"480-1340419790000"
Last-Modified: Sat, 23 Jun 2012 02:49:50 GMT
Content-Type: text/html
Content-Length: 480
Date: Sat, 23 Jun 2012 03:04:36 GMT
Connection: close
<html>
.....
访问方式: windows下 http 1.1
cmd进入
telnent localhost 8080
输入ctrl+]+回车
输入GET /工程名称/test.html http/1.0 回车
输入Host: 回车
注意:在输入GET信息的时候出错了 不能修改 必须重新来一次 否则无法得到正确结果
GET与POST
1,get
GET /工程名称/aaaservlet? firstname=fov&lastname=rui HTTP/1.1
Host:
2,post
POST /工程名称/servletURL HTTP/1.1
Host:
Content-Type: application/x-www-form-urlencoded
Content-Length: 27
firstname=fov&lastname=rui
响应状态码
(1)100--199
表示成功接受请求,要求客户端继续提交请求次能完成整个处理过程
(2)200--299
表示成功接受请求并已经完成整个处理过程
(3)300-399
为完成请求,客户需进一步细化请求,例如:请求资源已经移动到一个新的地址
(4)400-499
客户端的请求有错误
(5)500-599
服务器端出现错误
经常遇见的错误例子:
200(正常)
表示一切正常,返回正确请求结果
206(部分内容)
客户端发多了一个带有Range头(要求服务器只返回文档中的部分内容)的GET请求,服务器按要求完整这个请求
302/307(临时重定向)
指出被请求的文档已被临时的移动到别处,此文档的新的URL在Location响应头中给出
304(未修改)
表示客户机缓存的版本是最新的,客户机应继续使用它
401(未经授权)
表示客户机访问的是一个受口令和密码保护的页面,结合使用一个WWW-Authenticate响应头提示客户机重新发一个带有Authorization头的消息请求
404(找不到)
服务器上不存在客户机所请求的资源
500(内部服务错误)
服务器端的CGI,JSP等程序发生的错误
通用消息头
通用消息头字段能用于请求消息,也能够用于响应消息,它包括一些与被传输的实体内容没有关系的常用字段
Cache-Control <no-cache>--------(通知代理服务器,是否对缓存的信息进行最新) no-cache表示不需要缓存
Connection <colse>------------- (表示请求完只有的操作)
Date (表示HTTP消息产生的时间)
Pragma only<no-cache> (表示客户端不要缓存信息)
Trailer Date (表示某字段位与位于实体内容的后面) 表示Date位于实体内容的后面
Transfer-Encoding <chunked> (指定实体部分传输编码)
Upgrade HTTP/2.0 SHTTP/1.3 (表示协议的切换,允许服务器切换到某协议执行)
Via HTTP/1.1 Proxy1 HTTP/1.1 Proxy2 (表示规定代理服务器遵循的协议)
Warning (提高信息)
例子:
GET /工程名称/aaaservlet? firstname=fov&lastname=rui HTTP/1.1
Host:
Connection:close
请求头
请求头字段用于客户端在请求消息中向服务器传递附加信息,主要包括客户端可以接受的数据类型,压缩方法,语言,以及发出请求的超链接所属网页的URL
地址等信息。
Accept: text/html,image/*
Accept-Charset: ISO-8859-1,unicode-1-1 (服务器传输信息的编码信息)
Accept-Encoding: gzip,compress (服务器压缩编码)
Accept-Laguage: en-gb,zh-cn ( 返回语言格式)
Authorization: ( 设置口令密码)
Proxy-Authorization
......
例子:
telent www.google.cn
GET /HTTP/1.1
Host:
Accept-Language: zh-cn
实体头
用作实体内容的元信息,描述了实体的内容属性,包括实体信息类型,长度,压缩方法,最后一次修改时间,数据有效期等
Allow: GET,POST
Content-Encoding: gzip
Content-Language: zh-cn
Content-Length: 90
Content-Location: .. 封装实体的位置
Content-MD5:.. 对实体内容的MD5加密
Content-Range: byte 2415-45664/8790 服务器返回部分实体的位置
Content-type-Type: text/html,charset=GB3212 实体类型 [mime的类型方式]
Expire 过期时间
Last-Modified 文档最后更新时间
扩展头
Refresh
Refresh: 1 多久再放送一次请求
REfresh: 1;url=http://www.baidu.com 1秒后跳到www.baidu.com页
Content-Disposition
Content-Type: application/octet-stream
Content-Disposition: attachment;filename=aaa.zip
分享到:
相关推荐
HTTP基础知识培训是一场针对IT行业测试领域的专业课程,旨在帮助团队成员掌握HTTP协议的基本知识和实践应用。培训内容广泛,涵盖了从基础的HTTP协议概述到请求/响应模型,再到各种请求方法和状态码,以及HTTP协议在...
本篇将深入探讨HTTP基础类及其在编程中的应用。 HTTP协议的核心概念包括请求(Request)和响应(Response)。请求由客户端发起,包含一个方法(GET、POST等)、一个URL、HTTP版本、请求头部以及可能的请求体。响应...
【HTTP基础】 HTTP(Hypertext Transfer Protocol)是互联网上的应用最广泛的一种网络协议,用于从万维网服务器传输超文本到本地浏览器的传输协议。HTTP是无状态的,意味着每个请求都被视为独立的事务,服务器不会...
下面将通过分析标题和描述中的8张脑图,逐一探讨HTTP的基础知识。 1. **客户端和服务器端交互基础**: 这一脑图可能涵盖了HTTP请求和响应的基本结构,包括请求方法(GET、POST等)、请求头、请求体以及响应状态码...
本篇文章主要介绍了 HTTP 基础知识,包括 HTTP 的基本概念、Get 与 Post、HTTP 特性、HTTPS 与 HTTP、HTTP/1.1、HTTP/2、HTTP/3 演变等。 HTTP 基本概念 ---------------- HTTP 是超文本传输协议,英文全称为 ...
HTTPS(安全超文本传输协议)是在HTTP基础上加入了SSL/TLS加密层,以保证数据传输的安全性。在Java中,`javax.net.ssl.HttpsURLConnection`类可以处理HTTPS连接,同时需要配置信任的证书和密钥。理解HTTPS的工作原理...
在互联网上,HTTP(Hypertext Transfer Protocol)是应用层的主要协议,用于浏览器和服务器之间的通信,而HTTPS(HTTP over Secure Socket Layer)是在HTTP基础上增加了SSL/TLS加密,用于保护用户数据的安全。...
1. **HTTP与HTTPS**:HTTP(超文本传输协议)是互联网上应用最广泛的一种网络协议,HTTPS则是在HTTP基础上增加了SSL/TLS加密层,提供了数据传输的安全性。爬虫通常需要理解HTTP请求方法(GET、POST等)以及响应状态...
1. HTTPS(超文本传输安全协议)是在HTTP基础上加入SSL/TLS加密,提供数据传输的安全性。证书和公钥基础设施(PKI)是HTTPS安全的关键,确保了服务器身份的验证和数据的加密。 四、TCP与UDP 1. TCP是一种面向连接的...
3. **HTTP与HTTPS**:HTTP是超文本传输协议,用于在Web上进行数据交换,而HTTPS是在HTTP基础上加入SSL/TLS安全协议,提供加密传输和身份认证,确保数据的安全性。掌握如何使用C#的HttpWebRequest和HttpWebResponse类...
HTTP与FTP协议基础
1. HTTP基础:包括HTTP方法(GET、POST、PUT、DELETE等),状态码及其含义,以及HTTP报文结构。 2. 请求与响应:解析请求头、响应头,理解Cookie、Session的使用,以及如何处理重定向和缓存。 3. 连接管理:了解持久...
#### 三、HTTP基础知识 - **第1章:什么是HTTP?** - **HTTP的历史与目的:** 介绍了HTTP协议的发展历程及其在Web中的作用。 - **第2章:互联网与万维网** - **互联网概述:** 讨论了互联网的基本概念和技术。 ...
【描述】"JavaWeb程序设计入门课件HTTP协议共9页.pdf.zip" 指出这是一个压缩文件,其中包含9页关于HTTP协议的PDF文档,可能是详细讲解上述概念的课件,适合初学者快速掌握JavaWeb开发中的HTTP基础知识。 【标签】...
总结来说,这个实验涵盖了HTTP基础、多线程Web服务器的实现以及Java RMI的应用,这些都是构建复杂网络应用程序的基础。每个部分都至关重要,理解和掌握它们对于成为一名合格的IT专业人士至关重要。通过实践,你可以...
Python网络编程基础是入门Python网络应用开发的重要领域,它涵盖了从基本的网络概念到复杂的网络交互技术。在Python中,网络编程主要涉及TCP/IP协议、HTTP协议、套接字编程、Web服务API调用等多个方面。下面将详细...
如今互联网发展日新月异,HTTP/1.1 协议已经难以承载日益复杂的网页内容,因此 HTTP/2 值得尝试。本书介绍了 HTTP/2 的设计初衷和新特性,对比了在不同网络环境下以及不同浏览器 上 HTTP/1.1 与 HTTP/2 的性能表现...
总结,"简单的Http方式服务器与Android客户端的交互Demo"涵盖了HTTP基础,服务器端与Android客户端的通信机制,以及如何在实际应用中实现这一交互。通过理解和实践这些知识点,开发者能够创建功能完善的网络应用,...
- **HTTPS**(HTTP Secure):安全的超文本传输协议,在HTTP的基础上加入了SSL/TLS加密层,保证数据传输的安全性。 3. **DNS(Domain Name System)域名系统**: - **作用**:将易于记忆的域名转换为计算机可识别...