HTTP请求方法及响应码详解(http get post head)
Http请求方法之Get、Post原理
Http请求⽅法之Get、Post原理什么是HTTP? HTTP,即超⽂本传输协议,是⼀种实现客户端和服务器之间通信的响应协议,它是⽤作客户端和服务器之间的请求。
客户端(浏览器)会向服务器提交HTTP请求;然后服务器向客户端返回响应;其中响应包含有关请求的状态信息,还可能包含请求的内容。
HTTP的常⽤⽅法 1、GET⽅法 GET⽅法⽤于使⽤给定的URI从给定服务器中检索信息,即从指定资源中请求数据。
使⽤GET⽅法的请求应该只是检索数据,并且不应对数据产⽣其他影响。
在GET请求的URL中发送查询字符串(名称/值对),需要这样写:/test/demo_form.php?name1=value1&name2=value2 说明:GET请求是可以缓存的,我们可以从浏览器历史记录中查找到GET请求,还可以把它收藏到书签中;且GET请求有长度限制,仅⽤于请求数据(不修改)。
注:因GET请求的不安全性,在处理敏感数据时,绝不可以使⽤GET请求。
2、POST⽅法 POST⽅法⽤于将数据发送到服务器以创建或更新资源,它要求服务器确认请求中包含的内容作为由URI区分的Web资源的另⼀个下属。
POST请求永远不会被缓存,且对数据长度没有限制;我们⽆法从浏览器历史记录中查找到POST请求。
3、HEAD⽅法 HEAD⽅法与GET⽅法相同,但没有响应体,仅传输状态⾏和标题部分。
这对于恢复相应头部编写的元数据⾮常有⽤,⽽⽆需传输整个内容。
4、PUT⽅法 PUT⽅法⽤于将数据发送到服务器以创建或更新资源,它可以⽤上传的内容替换⽬标资源中的所有当前内容。
它会将包含的元素放在所提供的URI下,如果URI指⽰的是当前资源,则会被改变。
如果URI未指⽰当前资源,则服务器可以使⽤该URI 创建资源。
5、DELETE⽅法 DELETE⽅法⽤来删除指定的资源,它会删除URI给出的⽬标资源的所有当前内容。
6、CONNECT⽅法 CONNECT⽅法⽤来建⽴到给定URI标识的服务器的隧道;它通过简单的TCP / IP隧道更改请求连接,通常实使⽤解码的HTTP代理来进⾏SSL编码的通信(HTTPS)。
HTTP中header头部信息详解
HTTP中header头部信息详解HTTP Request的Header信息1、HTTP请求⽅式如下表:GET向Web服务器请求⼀个⽂件POST向Web服务器发送数据让Web服务器进⾏处理PUT向Web服务器发送数据并存储在Web服务器内部HEAD检查⼀个对象是否存在DELETE从Web服务器上删除⼀个⽂件CONNECT对通道提供⽀持TRACE跟踪到服务器的路径OPTIONS查询Web服务器的性能说明:主要使⽤到“GET”和“POST”。
实例:POST /test/tupian/cm HTTP/1.1分成三部分:1. POST:HTTP请求⽅式2. /test/tupian/cm:请求Web服务器的⽬录地址(或者指令)3. HTTP/1.1: URI(Uniform Resource Identifier,统⼀资源标识符)及其版本备注:在Ajax中,对应method属性设置。
2、Host说明:请求的web服务器域名地址3、User-Agent说明:HTTP客户端运⾏的浏览器类型的详细信息。
通过该头部信息,web服务器可以判断到当前HTTP请求的客户端浏览器类别。
实例:User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.114、Accept说明:指定客户端能够接收的内容类型,内容类型中的先后次序表⽰客户端接收的先后次序。
例如:Accept:text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5备注:在Prototyp(1.5)的Ajax代码封装中,将Accept默认设置为“text/javascript, text/html, application/xml, text/xml, */*”。
HTTP请求与响应
HTTP请求与响应http请求由三部分组成,分别是:请求行、消息报头、请求正文请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下:Method Request-URI HTTP-Version CRLF其中Method表示请求方法;Request-URI是一个统一资源标识符;HTTP-Version表示请求的HTTP协议版本;CRLF表示回车和换行(除了作为结尾的CRLF外,不允许出现单独的CR或LF字符)。
请求方法(所有方法全为大写)有多种,各个方法的解释如下:GET 请求获取Request-URI所标识的资源POST 在Request-URI所标识的资源后附加新的数据HEAD 请求获取由Request-URI所标识的资源的响应消息报头PUT 请求服务器存储一个资源,并用Request-URI作为其标识DELETE 请求服务器删除Request-URI所标识的资源TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断CONNECT 保留将来使用OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求一.HTTP请求1.HTTP请求格式:<request line><headers><blank line>[<request-body>]在HTTP请求中,第一行必须是一个请求行(request line),用来说明请求类型、要访问的资源以及使用的HTTP版本。
紧接着是一个首部(header)小节,用来说明服务器要使用的附加信息。
在首部之后是一个空行,再此之后可以添加任意的其他数据[称之为主体(body)]。
2.GET与POST区别HTTP 定义了与服务器交互的不同方法如上所示,最基本的方法是GET 和POST。
GET与POST方法有以下区别:(1)在客户端,Get方式在通过URL提交数据,数据在URL中可以看到;POST方式,数据放置在HTML HEADER内提交。
Get,Post和Head具体解释
Get,Post和Head具体解释HTTP请求最经常使⽤的三个⽅法:(1)Get⽅法. 取回请求URL标志的不论什么信息,在浏览器的地址栏中输⼊⽹址的⽅式訪问⽹页时,浏览器採⽤GET⽅法向server获取资源。
(2)Post⽅法.为请求报⽂准备数据,即要求被请求server接受附在请求消息后⾯的数据,经常使⽤于提交表单。
(3)Head⽅法. 类GET⽅法,不响应页⾯Body部分,⽤于获取资源的基本信息,即检查链接的可訪问性及资源是否改动。
其它⽅法:PUT 请求server存储⼀个资源。
并⽤Request-URI作为其标识DELETE 请求server删除Request-URI所标识的资源TRACE 请求server回送收到的请求信息,主要⽤于測试或诊断CONNECT 保留将来使⽤OPTIONS 请求查询server的性能,或者查询与资源相关的选项和需求get⽅法的问题:通过get提交的数据。
将会出如今URL上。
假设登录页⾯能够被浏览器缓存。
那么别⼈能够从浏览器的历史记录中读取到客户的账号和password。
get传送的数据量较⼩不能⼤于2KB。
Post⽅法的问题:Post⽅法须要server接收数据,对于server可能是不安全的。
运⾏效率⽐較低建议:1、get⽅式的安全性较Post⽅式要差些,包括机密信息的话,建议⽤Post数据提交⽅式;2、在做数据查询时,建议⽤Get⽅式。
⽽在做数据加⼊、改动或删除时。
建议⽤Post⽅式。
问题:为什么百度搜索使⽤Get⽽不适⽤Post?能够看⼀下http协议的内容 http请求主要有三种⽅式 get,head,post ,⽽ie发起⼀个请求⼀般包括,消息头和消息体。
假设请求的⽅式是get或者head⽅式,那么ie仅仅发送消息头到server,假设是post请求,那么消息体(⽹页表单内容)和消息头都将传送到server,这样数据量就⽐其他两种⽅式的⼤⼀些那么,按照上⾯所说。
HTTP请求(GET与POST区别)和响应(get是从服务器上获取数据,post是向服务器。。。
HTTP请求(GET与POST区别)和响应(get是从服务器上获取数据,post是向服务器。
HTTP有两部分组成:请求与响应,下⾯分别整理。
⼀.HTTP请求1.HTTP请求格式:<request line><headers><blank line>[<request-body>]在HTTP请求中,第⼀⾏必须是⼀个请求⾏(request line),⽤来说明请求类型、要访问的资源以及使⽤的HTTP版本。
紧接着是⼀个⾸部(header)⼩节,⽤来说明服务器要使⽤的附加信息。
在⾸部之后是⼀个空⾏,再此之后可以添加任意的其他数据[称之为主体(body)]。
2.GET与POST区别HTTP 定义了与服务器交互的不同⽅法,最基本的⽅法是 GET 和 POST(Ajax开发,关⼼的只有GET请求和POST请求)。
GET与POST⽅法有以下区别:(1)在客户端,Get⽅式在通过URL提交数据,数据在URL中可以看到;POST⽅式,数据放置在HTML HEADER内提交。
(2) GET⽅式提交的数据最多只能有1024字节,⽽POST则没有此限制。
(3)安全性问题。
正如在(1)中提到,使⽤ Get 的时候,参数会显⽰在地址栏上,⽽ Post 不会。
所以,如果这些数据是中⽂数据⽽且是⾮敏感数据,那么使⽤ get;如果⽤户输⼊的数据不是中⽂字符⽽且包含敏感数据,那么还是使⽤ post为好。
(4)安全的和幂等的。
所谓安全的意味着该操作⽤于获取信息⽽⾮修改信息。
幂等的意味着对同⼀ URL 的多个请求应该返回同样的结果。
完整的定义并不像看起来那样严格。
换句话说,GET 请求⼀般不应产⽣副作⽤。
从根本上讲,其⽬标是当⽤户打开⼀个链接时,她可以确信从⾃⾝的⾓度来看没有改变资源。
⽐如,新闻站点的头版不断更新。
虽然第⼆次请求会返回不同的⼀批新闻,该操作仍然被认为是安全的和幂等的,因为它总是返回当前的新闻。
HTTP请求格式:请求行、请求头详细介绍【爬虫工程师必会】
在网络传输中HTTP协议非常重要,该协议规定了客户端和器端请求和应答的标准HTTP协议能保证计算机正确快速地传输超文本文档,并确定了传输文档中的哪部分,以及哪部分内容首先显示(如文本先于图形)等。
根据HTTP协议的规定,客户端一个HTTP请求到器的请求消息,由请求行,求头部、空行以及请求数据四部分组成。
如下所示为请求消息的一般格式。
结合一个典型的HTTP请求示例,详细介绍HTTP请求信息的各个组成部分。
示例内容如下:GEThttps://www.baidu./content-search.xmlHTTP/1.1Host:www.baidu.Connection:keep-aliveSec-Fetch-Site:same-originSec-Fetch-Mode:no-corsUser-Agent:Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,lik eGecko)Chrome/78.0.3904.108Safari/537.36Accept-Encoding:gzip,deflate,brAccept-Language:zh-CN,zh;q=0.9Cookie:BIDUPSID=12D4BD8584CA4E016E061A2A996EF369;PSTM=1620090350;BAIDUI D=12D4BD8584CA4E01C03BA560AACCF2CE:FG=1;BD_UPN=12314753;H_PS_PSSID=3398 4_31660_33848_33759_33676_33607_33987_26350;BDORZ=B490B5EBF6F3CD402E515 D22BCDA1598;__yjs_duid=1_1a965d65ab35181f7b7b98cce26990951620094330751; ab_sr=1.0.0_YjM2Y2YwOWI1MDU4ZDEzODMyZDZkNDBlODllOWEzZTdiMjk4YzgzYmUyM2Z jODA4MWM0MDExZTdiMDZlOTQwOWZhMWI0NGQ3NzNhODI2NTYzMWM1NzQ2ZDBmYjhkM2Q1;i speed_lsm=0;H_PS_645EC=b177fVn0%2Brl2KczNrCfwRaWGfk3JZzrl7ScjgHBcxVvOku bEWrAPvQ6AXa4;BD_HOME=1;__guid=136081015.3970791550720005000.1620116535 606.869;monitor_count=2;BA_HECTOR=8121a4848h8l0k0l6o1g9213e0r1.请求行上例中第1行为请求行,包含了请求方法、URL和协议版本,代码如下:GEThttps://www.baidu./content-search.xmlHTTP/1.1其中,GET请求方法,https://www.baidu/URL,HTTP/1.1指定了协议版本。
http协议格式
http协议格式HTTP(Hypertext Transfer Protocol)是构建互联网应用的基础协议之一,它定义了客户端和服务器之间进行通信的格式和规则。
HTTP协议的主要目标是实现一种简单而灵活的方式来传输超文本,以便可以访问和传输网页、图片、视频等资源。
HTTP协议的格式主要包括请求格式和响应格式。
下面分别介绍这两种格式。
一、请求格式HTTP请求由客户端发送给服务器,用于请求对特定资源的访问。
请求格式包括请求行、请求头部和请求主体。
1. 请求行:请求行的格式为:METHOD URL HTTP/版本号其中,METHOD表示请求方法,包括常见的GET、POST、PUT、DELETE等;URL代表请求的资源的路径;HTTP/版本号指定了使用的HTTP协议的版本。
2. 请求头部:请求头部包括多行,每行由键值对组成。
常见的头部有:- Host:指定请求的服务器主机名和端口号。
- User-Agent:客户端的浏览器信息。
- Accept:客户端可以接受的数据类型。
- Content-Type:请求主体的数据类型。
3. 请求主体:请求主体是可选的,用于在POST请求中向服务器传送数据。
二、响应格式服务器接收到客户端的请求后,返回给客户端一个响应。
响应格式包括状态行、响应头部和响应主体。
1. 状态行:状态行的格式为:HTTP/版本号状态码状态描述其中,状态码表示服务器处理请求的结果,常见的状态码有200(成功)、404(资源未找到)、500(服务器内部错误)等。
2. 响应头部:响应头部和请求头部的格式类似,由多行键值对组成。
常见的头部有:- Content-Type:响应主体的数据类型。
- Content-Length:响应主体的长度。
- Set-Cookie:设置响应的Cookie。
3. 响应主体:响应主体是服务器返回给客户端的数据。
三、HTTP协议的特点1. 简单灵活:HTTP协议采用简单的文本格式,易于理解和编写。
Http请求详解(转)----请求+响应各字段详解
Http请求详解(转)----请求+响应各字段详解参考1. HTTP请求格式⾸先介绍HTTP协议:(HTTP,HyperText Transfer Protocol)是上应⽤最为⼴泛的⼀种。
所有的⽂件都必须遵守这个标准。
⼯作原理:1. 由HTTP客户端发起⼀个请求,建⽴⼀个到服务器指定端⼝(默认是)的TCP连接。
连接2. HTTP服务器则在那个端⼝监听客户端发送过来的请求。
⼀旦收到请求,请求3. 服务器(向客户端)发回⼀个状态⾏,⽐如"HTTP/1.1 200 OK",和(响应的)消息,消息的消息体可能是请求的⽂件、错误消息、或者其它⼀些信息。
响应4. 客户端接收服务器所返回的信息通过浏览器显⽰在⽤户的显⽰屏上,然后客户机与服务器断开连接显⽰内容HTTP使⽤TCP⽽不是UDP的原因在于(打开)⼀个⽹页必须传送很多数据,⽽TCP协议提供传输控制,按顺序组织数据,和错误纠正。
做过Socket编程的⼈都知道,当我们设计⼀个通信协议时,“消息头/消息体”的分割⽅式是很常⽤的,消息头告诉对⽅这个消息是⼲什么的,消息体告诉对⽅怎么⼲。
HTTP协议传输的消息也是这样规定的,每⼀个HTTP包都分为HTTP头和HTTP体两部分,消息体是可选的,⽽消息头是必须的。
每当我们打开⼀个⽹页,在上⾯点击右键,选择“查看源⽂件”,这时看到的HTML代码就是HTTP的消息体,那么消息头可以通过浏览器的开发⼯具或者插件可以看到,如果⽕狐的Firebug,IE的Httpwatch。
HTTP请求是指:客户端通过发送 HTTP 请求向服务器请求对资源的访问。
它向服务器传递了⼀个数据块,也就是请求信息,HTTP 请求由三部分组成:请求⾏、请求头和请求正⽂。
请求⾏:请求⽅法 URI 协议/版本请求头(Request Header)请求正⽂下⾯是⼀个HTTP请求的数据:POST /index.html HTTP/1.1 请求⽅法 url 协议/版本号Host: localhost 主机地址User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: zh-cn,zh;q=0.5Accept-Encoding: gzip, deflateConnection: keep-aliveReferer: <a target=_blank href="http://localhost/" style="color: rgb(51, 102, 153); text-decoration: none;">http://localhost/</a>Content-Length:25Content-Type:application/x-www-form-urlencoded请求空⾏标志着请求头结束,请求正⽂(请求体)的开始username=aa&password=12341、请求⾏:请求⽅法URI协议/版本请求的第⼀⾏是“⽅法 URL 协议/版本”,并以回车换⾏作为结尾。
http协议请求响应报文格式及状态码详解
HTTP协议报文格式HTTP协议(Hypertext Transfer Protocol――超文本传输协议)浏览器端(客户端)向WEB 服务器端访问页面的过程和HTTP协议报文的格式。
基于HTTP协议的客户机访问包括4个过程,分别是建立TCP套接字连接、发送HTTP请求报文、接收HTTP应答报文和关闭TCP套接字连接:1. 创建TCP套接字连接客户端与WEB服务器创建TCP套接字连接,其中WEB端服务器的地址可以通过域名解析确定,WEB端的套接字侦听端口一般是80。
2. 发送HTTP请求报文客户端向WEB服务端发送请求报文,HTTP协议的请求报文格式为:请求消息= 请求行(实体头信息)CRLF[实体内容]请求行= 方法URL HTTP版本号CRLF方法= GET|HEAD|POST|扩展方法URL = 协议名称+宿主名+目录与文件名其中"CRLF"表示回车换行。
"请求行"中的"方法"描述了对指定资源执行的动作,常用的方法"GET"、"HEAD"和"POST"等3种,它们的含义如表15-8所示:请求报文一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成,下图给出了请求报文的一般格式。
(1)请求行请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。
例如,GET /index.html HTTP/1.1。
HTTP协议的请求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。
这里介绍最常用的GET方法和POST方法。
GET:当客户端要从服务器中读取文档时,使用GET方法。
GET方法要求服务器将URL定位的资源放在响应报文的数据部分,回送给客户端。
使用GET方法时,请求参数和对应的值附加在URL后面,利用一个问号(“?”)代表URL的结尾与请求参数的开始,传递参数长度受限制。
HTTP请求行、请求头、请求体详解
HTTP请求⾏、请求头、请求体详解 HTTP请求⾏、请求头、请求体详解⽂本引⽤:HTTP请求报⽂解剖HTTP请求报⽂由3部分组成(请求⾏+请求头+请求体):下⾯是⼀个实例①是请求⽅法,GET和POST是最常见的HTTP⽅法,除此以外还包括DELETE、HEAD、OPTIONS、PUT、TRACE。
不过,当前的⼤多数浏览器只⽀持GET和POST,Spring 3.0提供了⼀个HiddenHttpMethodFilter,允许你通过“_method”的表单参数指定这些特殊的HTTP⽅法(实际上还是通过POST提交表单)。
服务端配置了HiddenHttpMethodFilter后,Spring会根据_method参数指定的值模拟出相应的HTTP⽅法,这样,就可以使⽤这些HTTP⽅法对处理⽅法进⾏映射了。
②为请求对应的URL地址,它和报⽂头的Host属性组成完整的请求URL,③是协议名称及版本号。
④是HTTP的报⽂头,报⽂头包含若⼲个属性,格式为“属性名:属性值”,服务端据此获取客户端的信息。
⑤是报⽂体,它将⼀个页⾯表单中的组件值通过param1=value1¶m2=value2的键值对形式编码成⼀个格式化串,它承载多个请求参数的数据。
不但报⽂体可以传递请求参数,请求URL也可以通过类似于“/chapter15/user.html? param1=value1¶m2=value2”的⽅式传递请求参数。
对照上⾯的请求报⽂,我们把它进⼀步分解,你可以看到⼀幅更详细的结构图:HTTP响应报⽂解剖响应报⽂结构HTTP的响应报⽂也由三部分组成(响应⾏+响应头+响应体):以下是⼀个实际的HTTP响应报⽂:①报⽂协议及版本;②状态码及状态描述;③响应报⽂头,也是由多个属性组成;④响应报⽂体,即我们真正要的“⼲货”。
响应状态码和请求报⽂相⽐,响应报⽂多了⼀个“响应状态码”,它以“清晰明确”的语⾔告诉客户端本次请求的处理结果。
HTTP六种请求方法
5,OPTIONS
但其实我们大部分情况下只用到了GET和POST。如果想设计一个符合RESTful规范的web应用程序,则这六种方法都会用到。不过即使暂时不想涉及REST,了解这六种方法的本质仍然是很有作用的。大家将会发现,原来web也是很简洁明了的。下面依次说明这六种方法。
其实还有一个TRACE方法,不过这个基本上不会用到,这里就不介绍了。以上的六种方法,我们可以跟数据库的CRUD增删改查操作对应起来:
CREATE :PUT
READ:GET
UPDATE:POST
DELETE:DELETE
这样一来就实现了HTTP和数据库操作(
其实不光是数据库,任何数据如文件图表都是这样)的完美统一,这也是REST的精髓之一。
0,GET:GET可以说是最常见的了,它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。GET请求中,永远不会包含呈现数据。
1,HEAD:HEAD和GET本质是一样的,区别在于HEAD不含有呈现数据,而仅仅是HTTP头信息。有的人可能觉得这个方法没什么用,其实不是这样的。想象一个业务情景:欲判断某个资源是否存在,我们通常使用GET,但这里用HEAD则意义更加明确。
2,PUT:这个方法比较少见。HTML表单也不支持这个。本质上来讲, PUT和POST极为相似,都是向服务器发送数据,但它们之间有一个重要区别,PUT通常指定了资源的存放位置,而POST则没有,POST的数据存放位置由服务器自己决定。举个例子:如一个用于提交博文的URL,/addBlog。如果用PUT,则提交的URL会是像这样的”/addBlog/abc123”,其中abc123就是这个博文的地址。而如果用POST,则这个地址会在提交后由服务器告知客户端。目前大部分博客都是这样的。显然,PUT和POST用途是不一样的。具体用哪个还取决于当前的业务场景。
Http请求头响应体详解
Http请求头响应体详解Referrer Policy 是什么?我们知道,在页⾯引⼊图⽚、JS 等资源,或者从⼀个页⾯跳到另⼀个页⾯,都会产⽣新的 HTTP 请求,浏览器⼀般都会给这些请求头加上表⽰来源的 Referrer 字段。
Referrer 在分析⽤户来源时很有⽤,有着⼴泛的使⽤。
属性介绍:新的 Referrer Policy 规定了五种 Referrer 策略:No Referrer、No Referrer When Downgrade、Origin Only、Origin When Cross-origin、和 Unsafe URL。
之前就存在的三种策略:never、default 和 always,在新标准⾥换了个名称。
他们的对应关系如下:策略名称属性值(新)属性值(旧)No Referrer no-referrer neverNo Referrer When Downgrade no-referrer-when-downgrade defaultOrigin Only origin-Origin When Cross-origin origin-when-crossorigin-Unsafe URL unsafe-url alwaysNo Referrer :任何情况下都不发送 Referrer 信息;No Referrer When Downgrade :仅当发⽣协议降级(如 HTTPS 页⾯引⼊ HTTP 资源,从 HTTPS 页⾯跳到 HTTP 等)时不发送 Referrer 信息。
这个规则是现在⼤部分浏览器默认所采⽤的;Origin Only:发送只包含 host 部分的 Referrer。
启⽤这个规则,⽆论是否发⽣协议降级,⽆论是本站链接还是站外链接,都会发送 Referrer 信息,但是只包含协议 + host 部分(不包含具体的路径及参数等信息);Origin When Cross-origin:仅在发⽣跨域访问时发送只包含 host 的 Referrer,同域下还是完整的。
HTTP协议—HTTP报文格式详解
HTTP协议—HTTP报⽂格式详解HTTP协议中有两种报⽂:请求报⽂和响应报⽂⼀、请求报⽂下⾯是⼀个⽐较典型的请求报⽂:每⼀⾏由⼀个回车和换⾏符结束,最后⼀⾏额外再加⼀个回车换⾏符。
HTTP请求报⽂的第⼀⾏叫做请求⾏,后⾯部叫⾸部⾏。
1、请求⾏:请求⾏的三个字段:⽅法字段、URL字段、HTTP版本字段。
⽅法字段可取值:GET、POST、HEAD、PUT和DELETE。
绝⼤部分HTTP请求报⽂都是GET⽅法。
当浏览器请求⼀个对象时,使⽤GET⽅法,在URL字段带有请求对象标识。
2、⾸部⾏Host:127.0.0.1:指明了对象所在主机,虽然主机中已经有⼀条TCP连接存在,但该⾏提供的信息是Web代理⾼速缓存所要求的。
User-Agent:指明代理,就是浏览器的类型。
这服务器可以有效地为不同类型的⽤户代理实际发送相同对象的不同版本。
Accept-Language:zh-CN:表⽰语法版本。
如果服务器中没有这样的对象的,就会发送其默认的版本。
Connection:close :要求服务器在发送完被请求的对象后就关闭这条连接。
HTTP请求通⽤请求格式(下⾯讨论实体体)实体体(entity body):使⽤GET⽅法时实体体会为空,使⽤POST⽅法时才会使⽤该实体体。
提交表单时,会使⽤到POST⽅法(例如在搜索引擎中输⼊搜索关键字),实体体中包含的就是⽤户在表单字段中输⼊的值。
虽然POST⽅法才能⽤到实体体,但是”⽤表单⽣成的请求报⽂不是必须使⽤POST⽅法“:HTML表单经常使⽤GET⽅法,在表单字段中所请求的URL中包括输⼊的数据,例如⼀个使⽤GET⽅法的表单有两个字段aaa和bbb,那么其URL的的结构是这样的:/admin? aaa&bbb (⾮常常见,浏览⽹页的时候可以注意⼀下)下⾯介绍另外⼀些⽅法:HEAD⽅法,与GET类似,服务器收到HEAD请求时,会⽤⼀个HTTP报⽂响应,但是不会反回请求对象,常⽤于调试跟踪。
「网络」HTTP中常见的各种状态码详解及解决方案
「⽹络」HTTP中常见的各种状态码详解及解决⽅案总结了⼀些常见的http的状态码,以及常见的解决⽅案。
各范围内状态码⼤致含义1xx:临时响应(Informational),需要请求者继续执⾏操作的状态代码,表⽰服务器正在接受请求。
2xx:成功状态码(Success),已成功接受客户端请求。
3xx:重定向状态码(Redirection),需要客户端做进⼀步操作来完成请求。
4xx:客户端错误(Client Error),客户端请求出错导致服务端⽆法正常完成请求。
5xx:服务端错误(Server Error),服务器出错未能成功处理服务端请求。
常见状态及解决⽅案①404:(Not Found)服务器⽆法找到请求的页⾯或资源。
a.此类报错⾸先考虑我们的接⼝写的时候正确。
(可以借⽤postman来测试,postman的使⽤详情可见另外⼀篇博客内容) b.其次可以检查资源的路径是否出错。
②405:(Method Not Allowed )⽅法不允许,⽅法禁⽤。
a.⼀般出现在servlet中⽐较常见.就是⾃⼰的service函数写错了。
b.⽅法名称写错,⽅法参数类型与标准不⼀致。
c.⽅法异常、返回值类型与标准不⼀致。
(这⼀般是前台的问题,我们的解决⽅案是:把post请求换成get请求)③500 :(Internal Server Error) 服务器内部错误,不能完成客户的请求。
a.500报错⼀般是后端服务器问题,但也不排除前端出错,例如后台报序列化错误,可能是因为前端没有设置content-Type=application/json。
b.重要的是要查看⾃⼰写的后端业务逻辑代码有没有问题,根据报错提⽰查找bug。
c.常见的错误位置:NullPointException,据库中提取的数据没有提取到⽽给另⼀个对象,传递了空值或注⼊某个对象,过程中出现空值.,没有正确获取到对象的⽽出现异常。
④501:( Not Implemented)尚未实施,或请求格式错误。
HTTP响应报文与工作原理详解
超文本传输协议(Hypertext Transfer Protocol,简称HTTP)是应用层协议。
HTTP 是一种请求/响应式的协议,即一个客户端与服务器建立连接后,向服务器发送一个请求;服务器接到请求后,给予相应的响应信息。
HTTP 请求报文HTTP 请求报文由请求行、请求头部、空行和请求包体 4 个部分组成,如下图所示:下面对请求报文格式进行简单的分析:请求行:请求行由方法字段、URL 字段和HTTP 协议版本字段 3 个部分组成,他们之间使用空格隔开。
常用的 HTTP 请求方法有 GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT;● GET:当客户端要从服务器中读取某个资源时,使用GET 方法。
GET 方法要求服务器将URL 定位的资源放在响应报文的数据部分,回送给客户端,即向服务器请求某个资源。
使用GET 方法时,请求参数和对应的值附加在 URL 后面,利用一个问号(“?”)代表URL 的结尾与请求参数的开始,传递参数长度受限制。
例如,/index.jsp?id=100&op=bind。
● POST:当客户端给服务器提供信息较多时可以使用POST 方法,POST 方法向服务器提交数据,比如完成表单数据的提交,将数据提交给服务器处理。
GET 一般用于获取/查询资源信息,POST 会附带用户数据,一般用于更新资源信息。
POST 方法将请求参数封装在HTTP 请求数据中,以名称/值的形式出现,可以传输大量数据;请求头部:请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。
请求头部通知服务器有关于客户端请求的信息,典型的请求头有:● User-Agent:产生请求的浏览器类型;● Accept:客户端可识别的响应内容类型列表;星号“ * ” 用于按范围将类型分组,用“ */* ” 指示可接受全部类型,用“ type/* ”指示可接受 type 类型的所有子类型;● Accept-Language:客户端可接受的自然语言;● Accept-Encoding:客户端可接受的编码压缩格式;● Accept-Charset:可接受的应答的字符集;● Host:请求的主机名,允许多个域名同处一个IP 地址,即虚拟主机;● connection:连接方式(close 或 keepalive);● Cooki e:存储于客户端扩展字段,向同一域名的服务端发送属于该域的cookie;空行:最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头;请求包体:请求包体不在 GET 方法中使用,而是在POST 方法中使用。
http请求方法
http请求方法HTTP请求方法1. GET方法GET方法用于从服务器获取资源。
它指示服务器返回指定资源的表示。
例如,通过GET方法可以获取网页、图片或其他文件。
2. POST方法POST方法用于向服务器提交数据。
它指示服务器处理请求中包含的实体,并在服务器上创建新的资源。
例如,通过POST方法可以提交表单数据或向服务器上传文件。
3. PUT方法PUT方法用于向服务器上传数据,并替换指定的资源或在服务器上创建新的资源。
它类似于POST方法,但是要求请求中包含完整的资源表示。
例如,通过PUT方法可以上传文件或更新数据库中的记录。
4. DELETE方法DELETE方法用于从服务器删除指定的资源。
它指示服务器删除请求中指定的资源。
例如,通过DELETE方法可以删除文件或从数据库中删除记录。
5. HEAD方法HEAD方法类似于GET方法,但是在服务器返回响应之前,它只返回响应头信息,而不返回实体主体。
例如,通过HEAD方法可以检查资源是否存在或获取资源的元数据。
6. OPTIONS方法OPTIONS方法用于获取服务器支持的请求方法和资源的详细信息。
它指示服务器返回服务器配置的信息,包括允许的请求方法、支持的认证方式等。
7. TRACE方法TRACE方法用于在请求报文的回传路径上获取该请求所经过的所有中间节点。
它指示服务器返回原始请求报文,以便客户端查看请求在传输过程中是否被修改。
8. CONNECT方法CONNECT方法用于与服务器建立隧道连接,可以在客户端和服务器之间进行加密通信。
它通常用于HTTPS的安全连接。
以上是常见的HTTP请求方法,每种方法都有自己特定的用途,可以根据需要选择适当的方法进行通信。
请注意,每个HTTP请求方法所带的参数和语义可能有所不同,具体使用时需参考HTTP协议规范进行正确的实现。
Http请求头和响应头(Get和Post)
Http请求头和响应头(Get和Post)HTTP简介HTTP协议是Hyper Text Transfer Protocol(超⽂本传输协议)的缩写,是⽤于从万维⽹(WWW:World Wide Web )服务器传输超⽂本到本地浏览器的传送协议。
HTTP是⼀个基于TCP/IP通信协议来传递数据(HTML ⽂件, 图⽚⽂件, 查询结果等)。
HTTP⼯作原理HTTP三点注意事项:HTTP是⽆连接:⽆连接的含义是限制每次连接只处理⼀个请求。
服务器处理完客户的请求,并收到客户的应答后,即断开连接。
采⽤这种⽅式可以节省传输时间。
HTTP是媒体独⽴的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。
客户端以及服务器指定使⽤适合的MIME-type内容类型。
HTTP是⽆状态:HTTP协议是⽆状态协议。
⽆状态是指协议对于事务处理没有记忆能⼒。
缺少状态意味着如果后续处理需要前⾯的信息,则它必须重传,这样可能导致每次连接传送的数据量增⼤。
另⼀⽅⾯,在服务器不需要先前信息时它的应答就较快。
HTTP消息结构HTTP请求消息⼀个HTTP请求报⽂由请求⾏(request line)、请求头(header)、空⾏和请求数据4个部分组成,下图给出了请求报⽂的⼀般格式。
1.请求⾏请求⾏由请求⽅法字段、URL字段和HTTP协议版本字段3个字段组成,它们⽤空格分隔。
例如,GET /index.html HTTP/1.1。
根据HTTP标准,HTTP请求可以使⽤多种请求⽅法。
HTTP1.0定义了三种请求⽅法: GET, POST 和 HEAD⽅法。
HTTP1.1新增了五种请求⽅法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT ⽅法。
⽽常见的有如下⼏种:1).GET最常见的⼀种请求⽅式,当客户端要从服务器中读取⽂档时,当点击⽹页上的链接或者通过在浏览器的地址栏输⼊⽹址来浏览⽹页的,使⽤的都是GET⽅式。
http方法
http方法http请求方法的概述HTTP(Hypertext Transfer Protocol)是一种用于传输超文本的协议,它定义了客户端和服务器之间交流的规则。
在HTTP中,有多种请求方法用于向服务器发送不同的请求,下面将介绍这些请求方法的不同特点。
GET请求方法:GET方法用于请求服务器发送某个资源的内容。
对于GET请求,请求参数会包含在URL中,并且以键值对的形式进行传递。
GET请求常用于获取数据,并且在请求过程中不会对服务器上的资源进行修改。
POST请求方法:POST方法用于向服务器提交数据。
与GET请求不同,POST请求的请求参数不会出现在URL中,而是通过请求的正文进行传递。
POST请求常用于向服务器提交表单数据或上传文件。
PUT请求方法:PUT方法用于向服务器上传或修改资源。
与POST请求不同,PUT请求需要在请求的URL中指定资源的位置,并且会用请求的正文内容替换服务器上的资源内容。
PUT请求常用于更新服务器上的资源。
DELETE请求方法:DELETE方法用于请求服务器删除指定的资源。
与GET请求不同,DELETE请求的主要目的是删除服务器上的资源,而不是获取资源的内容。
DELETE请求常用于删除服务器上的某个资源。
PATCH请求方法:PATCH方法用于对服务器上的资源进行局部更新。
与PUT请求不同,PATCH请求只需要向服务器发送需要更新的字段,而不需要发送整个资源的内容。
PATCH请求常用于更新资源的部分内容。
以上是常用的HTTP请求方法,每种方法都有不同的特点和用途。
在使用这些请求方法时,需要根据具体的需求选择合适的方法,并且遵循HTTP协议的规范。
HTTP协议请求方法和常见错误
HTTP协议中POST、GET、HEAD、PUT等请求方法以及一些常见错误请求方法是请求一定的Web页面的程序或用于特定的URL。
可选用下列几种:GET:请求指定的页面信息,并返回实体主体。
HEAD:只请求页面的首部。
POST:请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。
PUT:从客户端向服务器传送的数据取代指定的文档的内容。
DELETE:请求服务器删除指定的页面。
OPTIONS:允许客户端查看服务器的性能。
TRACE:请求服务器在响应中的实体主体部分返回所得到的内容。
PATCH:实体中包含一个表,表中说明与该URI所表示的原内容的区别。
MOVE:请求服务器将指定的页面移至另一个网络地址。
COPY:请求服务器将指定的页面拷贝至另一个网络地址。
LINK:请求服务器建立链接关系。
UNLINK:断开链接关系。
WRAPPED:允许客户端发送经过封装的请求。
Extension-mothed:在不改动协议的前提下,可增加另外的方法。
当服务器响应时,其状态行的信息为HTTP的版本号,状态码,及解释状态码的简单说明。
现将5类状态码详细列出:①客户方错误100 继续101 交换协议②成功200 OK201 已创建202 接收203 非认证信息204 无内容205 重置内容206 部分内容③重定向300 多路选择301 永久转移302 暂时转移303 参见其它304 未修改(Not Modified)305 使用代理④客户方错误400 错误请求(Bad Request)401 未认证402 需要付费403 禁止(Forbidden)404 未找到(Not Found)405 方法不允许406 不接受407 需要代理认证408 请求超时409 冲突410 失败411 需要长度412 条件失败413 请求实体太大414 请求URI太长415 不支持媒体类型⑤服务器错误500 服务器内部错误501 未实现(Not Implemented)502 网关失败504 网关超时505 HTTP版本不支持关于实体头部的内容还可以有:Last Modified :请求文档的最近修改时间。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
HTTP是Web协议集中的重要协议,它是从客户机/服务器模型发展起来的。
客户机/服务器是运行一对
相互通信的程序,客户与服务器连接时,首先,向服务器提出请求,服务器根据客户的请求,完成处理
并给出响应。
浏览器就是与Web服务器产生连接的客户端程序,它的端口为TCP的80端口,。
浏览器
与Web 服务器之间所遵循的协议就是HTTP。
HTTP的早期版本为HTTP/0.9,它适用于各种数据信息的简洁快速协议,但是其远不能满足日益发展各
种应用的需要。
但HTTP/0.9作为HTTP协议具有典型的无状态性:每个事务都是独立进行处理的,当
一个事务开始就在客户与服务器之间建立一个连接,当事务结束时就释放这个连接。
HTTP/0.9包含Simple-Request&Simple-Responsed的报文结构。
但是客户无法使用内容协商,所以服务器也无法
返回实体的媒体类型。
1982年,Tim Berners-Lee提出了HTTP/1.0,在此后的不断丰富和发展中,HTTP/1.0成为最重要
的面向事务的应用层协议。
该协议对每一次请求/响应,建立并拆除一次连接。
其特点是简单、易于管理,所以它符合了大家的需要,得到了广泛的应用。
其缺点是仍会发生下列问题:对用户请求响应慢、网络拥
塞严重、安全性等。
1997年形成的HTTP/1.1,也就是现在普遍使用的协议,在持续连接操作机制中实现流水方式,即客户
端需要对同一服务器发出多个请求时,其实现在多数的网页都是有多部分组成(比如多张图片),可用
流水线方式加快速度,流水机制就是指连续发出多个请求并等到这些请求发送完毕,再等待响应。
这样
就大大节省了单独请求对响应的等待时间,使我们得到更快速的浏览。
另外,HTTP/1.1服务器端处理请求时按照收到的顺序进行,这就保证了传输的正确性。
当然,服务器端
在发生连接中断时,会自动的重传请求,保证数据的完整性。
HTTP/1.1还提供了身份认证、状态管理和Cache缓存等机制。
这里,我想特别提一下关于HTTP/1.1
中的Cache缓存机制对 HTTP/1.0的不足之处的改进,它严格全面,既可以减少时间延迟、又节省了带宽。
HTTP/1.1采用了内容协商机制,选择最合适的用户的内容表现形式。
现在,很多地方都有用到的虚拟主机技术在HTTP/1.1中也可以实现。
所谓的虚拟主机技术,就是同一
主机地址实际对应多台主机。
通俗的讲,当你同时在一个网站申请两个主页时,用协议分析仪可以发现
其实这两个主页对应的是同一个IP地址。
这样用多台完全相同的机器形成WWW服务器就可以提高处
理的吞吐量。
传统的解决方案是改造域名服务器使其可以根据一定的算法将同一域名解释成不同的IP地址。
分别对应
虚拟主机的每台机器,其缺点是要求每台机器占用完全独立的IP地址,这与IP地址的缺乏是相矛盾的。
HTTP/1.1提供的解决方案在HTTP协议自身中加入了指定不同主机的功能,从而多台主机可以共享一个IP地址,既提高了性能又便于管理。
因为HTTP/1.1是Internet现行的标准协议,这里详细介绍其相关语法。
首先,HTTP/1.1格式可写为:
其中请求方法是请求一定的Web页面的程序或用于特定的URL。
可选用下列几种:
GET:请求指定的页面信息,并返回实体主体。
HEAD:只请求页面的首部。
POST:请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。
PUT:从客户端向服务器传送的数据取代指定的文档的内容。
DELETE:请求服务器删除指定的页面。
OPTIONS:允许客户端查看服务器的性能。
TRACE:请求服务器在响应中的实体主体部分返回所得到的内容。
PATCH:实体中包含一个表,表中说明与该URI所表示的原内容的区别。
MOVE:请求服务器将指定的页面移至另一个网络地址。
COPY:请求服务器将指定的页面拷贝至另一个网络地址。
LINK:请求服务器建立链接关系。
UNLINK:断开链接关系。
WRAPPED:允许客户端发送经过封装的请求。
Extension-mothed:在不改动协议的前提下,可增加另外的方法。
比如:
GET /index.html HTTP/1.1
Accept: text/plain /*纯ASCII码文本文件*/
Accept: text/html /*HTML文本文件*/
User-Agent:Mozilla/4.5(WinNT)
说明浏览器使用Get方法请求文档/index.html。
浏览器则只允许接收纯ASCII码文本文件和HTML文本文件,其使用的引擎是Mozilla/4.5(Netscape)。
当服务器响应时,其状态行的信息为HTTP的版本号,状态码,及解释状态码的简单说明。
现将5类状态码详细列出:
①客户方错误
100继续
101交换协议
②成功
200 OK
201 已创建
202接收
203非认证信息
204无内容
205 重置内容
206部分内容
③重定向
300 多路选择
301永久转移
302暂时转移
303参见其它
304 未修改(Not Modified)
305使用代理
④客户方错误
400错误请求(Bad Request)
401 未认证
402 需要付费
403禁止(Forbidden)
404未找到(Not Found)
405方法不允许
406不接受
407需要代理认证
408请求超时
409冲突
410 失败
411 需要长度
412条件失败
413 请求实体太大
414 请求URI太长
415 不支持媒体类型
⑤服务器错误
500服务器内部错误
501未实现(Not Implemented)
502网关失败
504 网关超时
505 HTTP版本不支持
比如:(在《TELNET……》一文中用telnet登陆80端口,相同的方法用在HTTP/1.1中,会发现没有显示,下面补充说明之)
telnet 80
HEAD / HTTP/1.1
host: /*本行为输入内容*/
HTTP/1.1 501 Method Not Implemented
Date: Web, 01 Nov 2000 07:12:29 GMT /*当前的日期/时间*/
Server: Apache/1.3.12 (Unix) /*Web服务器信息*/
Allow: GET, HEAD, OPTION, TRACE /*支持的方法类型*/
Connection: close
Connect-Type: Text/html; charset=iso-8859-1/*连接的媒体类型*/
<!DOCTYPE HTML PUBLIG "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>501 Method
Not Implemented</TITLE>
</HEAD><BODY>
<H1>Method Not Implemented</H1>
head to /inde
x.html not supported.<P>
Invalid method in request head / htp/1.1<P>
<HR>
<ADDRESS>
Apache/1.3.12 Server at Port 80</ADDRESS>
</BODY></HTML>
关于实体头部的内容还可以有:
Last Modified :请求文档的最近修改时间。
Expires :请求文档的过期时间。
Connect-length:文档数据的长度。
WWW-authenricate:通知客户端需要的认证信息。
Connect-encoding :说明有无使用压缩技术。
Transfer-encoding :说明采用的编码变换类型。
随着Internet的发展,下一代的HTTP协议HTTP-ng已经在酝酿之中,它将会提供更好的安全性、更快的速度,其改进要点为:模块化强、网络效率高、安全性更好、结构更简单。