码迷,mamicode.com
首页 > Web开发 > 详细

HTTP—这估计是你看的最仔细的一份协议了!

时间:2019-04-19 17:50:55      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:sockets   访问   维护   dde   form   servlet   无法   安全   文档   

HTTP—这估计是你看的最仔细的一份协议了!

 

2017-10-20 Java联盟

 

?

 

温馨提示:本文干货,建议保存

 

 

1.HTTP协议

 

HTML 是构建网页的语言,HTTP 是网页的传输协议,两者结合,构成了 WEB 应用开发的基础。

 

 

HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最为广泛的一种网络协议,设计 HTTP 的最初目的是为了提供一种发布和接收 HTML 页面的方法。

 

 

?

 

 

默认HTTP的端口号为80,HTTPS的端口号为443。

 

http 协议是建立在 tcp/ip 协议基础上 。

 

http 协议全称超文本传输协议 。

 

http 协议1.0 ,  1.1,  2.0版本,目前通用的是1.1版本 

 

http1.0 称为短连接

 

http1.1 , http2.0 称为长连接. 

 

 

所谓长,和短指的是持续时间

 

长连接 http1.1 持续时间眯30s 

 

短连接是发送完数据就断掉

 

 

 SSL : Secure Sockets Layer 安全套接层, 需申请证书。

 

 

2 http的访问

 

 

?

 

 

(1) 协议。http和https。

 

(2) 服务器。域名或IP地址。

 

(3) 端口。默认端口为80,Web服务器可以根据需要配置端口。

 

(4) 路径,服务器上所请求资源位置的路径。其中,appname为Web应用名称,path为路径。

 

(5) 资源,请求文档的名称。可以是HTML页面、Servlet、PDF文件、图像、音频文件或视频文件等服务器提供服务的文档类型。如果本部分省略,大多数服务器会默认查找index.html页面或设置的欢迎页面。

 

(6) 查询字符串。如HTTP GET,参数加到URL的末尾,以问号“?”起始,每个参数以“名=值”的形式出现,多个参数间用“&”分隔。 

 

 

?

 

3 http请求

 

Http的八种请求动作:

 

 

GET

 

向特定的资源发出请求。

 

 

POST

 

向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改

 

 

PUT

 

向指定资源位置上传其最新内容

 

 

DELETE

 

请求服务器删除Request-URI所标识的资源

 

(最基本的记住前四个请求,他们分别代表增删改查)

 

 

OPTIONS

 

返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送‘*‘的请求来测试服务器的功能性

 

 

HEAD

 

向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息

 

 

TRACE

 

回显服务器收到的请求,主要用于测试或诊断

 

 

CONNECT

 

HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器

 

 

 

?

 

 

常见的请求头标记列示如下:

 

(1) GET或POST:请求类型,后接请求资源、协议和版本

 

(2) Host:主机和端口

 

(3) Connection:是否使用持续连接

 

(4) User-Agent:客户端浏览器的名称

 

(5) Accept:浏览器可接受的MIME类型

 

(6) Accept-Encoding:浏览器知道如何解码的数据编码类型

 

(7) Accept-Language:浏览器指定的语言

 

(8) Accept-Charset:浏览器支持的字符编码

 

(9) Cookie:保存的Cookie对象

 

 

4 http响应

 

利用谷歌浏览器

 

按下 F12 选择 network 

 

记得点一下

 

?

 

这个按钮 再点一下F5

 

 

?

 

 

响应头用于指示客户端如何处理响应体,告诉浏览器响应的类型、字符编码和字节大小等信息。常用的响应头列示如下。

 

(1) Allow:服务器支持哪些请求方法(如GET、POST等)

 

(2) Content-Encoding:文档的编码(Encode)类型。只有在解码之后才可以得到Content-Type头指定的内容类型

 

(3) Content-Length:内容长度。只有当浏览器使用持久HTTP连接时才需要这个数据

 

(4) Content-Type:表示后面的文档属于什么MIME类型

 

(5) Date:当前的GMT时间

 

(6) Expires:文档过期时间

 

(7) Refresh:表示浏览器应该在多少时间之后刷新文档,以秒计

 

(8) Server:服务器名称

 

(9) Set-Cookie:设置与页面关联的Cookie

 

(10) WWW-Authenticate:客户应该在Authorization头中提供的授权信息类型

 

 

 

?

 

 

2.6.4 响应状态

 

(1) 1xx消息:请求已被服务器接收,继续处理

 

(2) 2xx成功:请求已成功被服务器接收、理解、并接受

 

(3) 3xx重定向:需要后续操作才能完成这一请求

 

(4) 4xx请求错误:请求含有词法错误或者无法被执行

 

(5) 5xx服务器错误:服务器在处理某个正确请求时发生错误

 

 

常用的响应状态:

 

100 Continue

 

初始的请求已经接受,客户应当继续发送请求的其余部分

 

 

101 Switching Protocols

 

服务器将遵从客户的请求转换到另外一种协议

 

 

200 OK

 

一切正常,对GET和POST请求的应答文档跟在后面

 

 

201 Created

 

服务器已经创建了文档,Location头给出了它的URL。

 

 

202 Accepted

 

已经接受请求,但处理尚未完成。

 

 

203 Non-Authoritative Information

 

文档已经正常地返回,但一些应答头可能不正确,因为使用的是文档的拷贝

 

 

204 No Content

 

没有新文档,浏览器应该继续显示原来的文档。如果用户定期地刷新页面,而Servlet可以确定用户文档足够新,这个状态代码是很有用的

 

 

205 Reset Content

 

没有新的内容,但浏览器应该重置它所显示的内容。用来强制浏览器清除表单输入内容

 

 

206 Partial Content

 

客户发送了一个带有Range头的GET请求,服务器完成了它

 

 

300 Multiple Choices

 

客户请求的文档可以在多个位置找到,这些位置已经在返回的文档内列出。如果服务器要提出优先选择,则应该在Location应答头指明。

 

 

301 Moved Permanently

 

客户请求的文档在其他地方,新的URL在Location头中给出,浏览器应该自动地访问新的URL。

 

 

302 Found

 

类似于301,但新的URL应该被视为临时性的替代,而不是永久性的。

 

 

303 See Other

 

类似于301/302,不同之处在于,如果原来的请求是POST,Location头指定的重定向目标文档应该通过GET提取

 

 

304 Not Modified

 

客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用。

 

 

305 Use Proxy

 

客户请求的文档应该通过Location头所指明的代理服务器提取

 

 

307 Temporary Redirect

 

和302(Found)相同。许多浏览器会错误地响应302应答进行重定向,即使原来的请求是 POST,即使它实际上只能在POST请求的应答是303时才能重定向。由于这个原因,HTTP 1.1新增了307,以便更加清除地区分几个状态代码: 当出现303应答时,浏览器可以跟随重定向的GET和POST请求;如果是307应答,则浏览器只能跟随对GET请求的重定向。

 

 

400 Bad Request

 

  请求出现语法错误。

 

 

401 Unauthorized

 

客户试图未经授权访问受密码保护的页面。应答中会包含一个WWW-Authenticate头,浏览器据此显示用户名字/密码对话框,然后在填写合适的Authorization头后再次发出请求。

 

 

403 Forbidden

 

资源不可用。

 

 

404 Not Found

 

无法找到指定位置的资源

 

?

 

这下你知道有时候你浏览网站弹出404是什么意思了吧!

 

 

405 Method Not Allowed

 

请求方法(GET、POST、HEAD、Delete、PUT、TRACE等)对指定的资源不适用。

 

 

406 Not Acceptable

 

指定的资源已经找到,但它的MIME类型和客户在Accpet头中所指定的不兼容

 

 

407 Proxy Authentication Required

 

类似于401,表示客户必须先经过代理服务器的授权。

 

 

408 Request Timeout

 

在服务器许可的等待时间内,客户一直没有发出任何请求。客户可以在以后重复同一请求。

 

 

409 Conflict

 

通常和PUT请求有关。由于请求和资源的当前状态相冲突,因此请求不能成功。

 

 

410 Gone

 

所请求的文档已经不再可用,而且服务器不知道应该重定向到哪一个地址。它和404的不同在于,返回407表示文档永久地离开了指定的位置,而404表示由于未知的原因文档不可用。

 

 

411 Length Required

 

服务器不能处理请求,除非客户发送一个Content-Length头。

 

 

412 Precondition Failed

 

请求头中指定的一些前提条件失败

 

 

413 Request Entity Too Large

 

目标文档的大小超过服务器当前愿意处理的大小。如果服务器认为自己能够稍后再处理该请求,则应该提供一个Retry-After头

 

 

414 Request URI Too Long

 

URI太长

 

 

416 Requested Range Not Satisfiable

 

服务器不能满足客户在请求中指定的Range头

 

 

500 Internal Server Error

 

服务器遇到了意料不到的情况,不能完成客户的请求

 

 

?

 

反正我比较常见的就是这两个错误了

 

 

501 Not Implemented

 

服务器不支持实现请求所需要的功能。例如,客户发出了一个服务器不支持的PUT请求

 

 

502 Bad Gateway

 

服务器作为网关或者代理时,为了完成请求访问下一个服务器,但该服务器返回了非法的应答

 

 

503 Service Unavailable

 

服务器由于维护或者负载过重未能应答。例如,Servlet可能在数据库连接池已满的情况下返回503。服务器返回503时可以提供一个Retry-After头

 

 

504 Gateway Timeout

 

由作为代理或网关的服务器使用,表示不能及时地从远程服务器获得应答

 

 

505 HTTP Version Not Supported

 

服务器不支持请求中所指明的HTTP版本

 

  

 

?

 

 

2.6.5 响应体

 

响应体就是Web服务器发送到客户端的实际内容。

 

如:HTML页面,JSON,XML

 

响应体还可以是诸如Word、Excel或PDF等其他类型的文档,具体是哪种文档类型由Content-Type指定的MIME类型决定。

 

HTTP—这估计是你看的最仔细的一份协议了!

标签:sockets   访问   维护   dde   form   servlet   无法   安全   文档   

原文地址:https://www.cnblogs.com/anyiz/p/10737363.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!