HTTP—这估计是你看的最仔细的一份协议了!
Posted anyiz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP—这估计是你看的最仔细的一份协议了!相关的知识,希望对你有一定的参考价值。
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—这估计是你看的最仔细的一份协议了!的主要内容,如果未能解决你的问题,请参考以下文章