HTTP协议

HTTP定义

HTTP:超文本传输协议,是一种详细规定了浏览器和万维网服务器之间互相通信的
规则,它是万维网交换信息的基础,它允许将HTML(超文本标记语言)文档从web
服务器传送到web浏览器
HTTP是一种无状态的协议。无状态是指web浏览器与web服务器之间不需要建立持
久的连接。在服务器端不保留连接的相关信息。HTTP请求只能由客户端发起。

HTTP请求与响应

>>HTTP请求包括三部分,请求行(请求方法)、请求头(消息报头)和请求正文。
POST / login.php HTTP/1.1               //请求行
HOST: www . xxser . com                //请求头/消息头
User- Agent: Mozilla/5.0 (Windows NT 6.1; rv:15.0) Gecko/20100101
 Firefox/15.0                          //空白行,代表请求头结束
Username=admin &pa s sword=admin       //请求正文
>>HTTP响应
HTTP/1.1 200 OK                        //响应行
Date: Tue, 22 Jun 2021 03:05:18 GMT    //响应头
Accept-Ranges: bytes
Cache-Control: private, no-cache, no-store, proxy-revalidate, 
no-transform
Connection: keep-alive
Content-Length: 2381
Content-Type: text/html
Etag: "588604c8-94d"
Last-Modified: Mon, 23 Jan 2017 13:27:36 GMT
Pragma: no-cache
Server: bfe/1.0.8.18
Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/   //空白行,代表响应头结束
<!DOCTYPE html> .......                  //响应正文或消息主题

HTTP请求方法

>>GET:用于获取请求页面的指定信息(以实体的格式)。若请求资源为动态脚本
>(非HTML),那么返回文本是WEB容器解析后的HTML源代码,而不是源文件。
>>HEAD:方法除了服务器不能在响应里返回消息主体外,其他都与GET方法相同。此方法经常被用来测试超文本链接的有效性、可访问性和最近的改变。因为只测试资源是否存在,而不返回信息主题,所以速度是最快的。
>>POST:与GET相似,区别在于,GET方法没有请求内容,而POST是有请求内容的。POST请求最多用于向服务器发送大量的数据。GET能发送数据,但有长度限制,且会将发送的数据显示在浏览器端,POST不会,安全相对高一点。
>>PUT:用于请求服务器把请求中的实体存储在请求资源下。已存在则做替换若请求资源不存在,则创建这个资源,且数据位请求正文。通常情况下,服务器都会关闭PUT方法,因为他会为服务器建立文件,属于危险的方法之一。
>>DELETE:用于请求源服务器删除请求的指定资源。危险方法之一。
>>TRACE:被用于激发一个远程的应用层的请求消息回路,即回显服务器收到的请求。TRACE方法允许客户端去了解数据被请求链的另一端接收的情况,并且利用那些数据信息去测试或诊断。
>>CONNECT,用于能动态切换到隧道的代理。
>>OPTIONS,用于请求获得由URL标识的资源在请求/响应的通信过程中可以使用的功能选项。通过这个方法,客户端可以在采取具体资源请求之前,决定对该资源采取何种必要措施,或者了解服务器的性能。

HTTP协议响应状态码

1xx:信息:状态码是临时响应,代表着请求已经被接受,但需要继续处理,由于
HTTP/1.0 协议中并没有定义1XX状态码,除非在试验条件下,服务器是禁止向客户端发送1XX响应的。
  100 Continue — 服务器仅接收到部分请求,但是一旦服务器并没有拒绝该请求,客户端应该继续发送其余的请求。
  101 Switching Protocols — 服务器转换协议:服务器将遵从客户的请求转换到另外一种协议。
  102 Processing — 由WebDAV(RFC 2518)扩展的状态码,代表处理将被继续执行。
2xx:成功:代表着请求已经被服务器接收、理解、并接受
  200 OK:请求成功(其后是对GETPOST请求的应答文档。)
  201 Created — 请求被创建完成,同时新的资源被创建。
  202 Accepted — 供处理的请求已被接受,但是处理未完成。
  203 Non-authoritative Information — 文档已经正常地返回,但一些应答头可能不正确,因为使用的是文档的拷贝。
    204 No Content — 没有新文档.浏览器应该继续显示原来的文档。如果用户定期地刷新页面,而Servlet可以确定用户文档足够新,这个状态代码是很有用的。
  205 Reset Content — 没有新文档。但浏览器应该重置它所显示的内容。用来强制浏览器清除表单输入内容。
  206 Partial Content — 客户发送了一个带有Range头的GET请求,服务器完成了它。
  207 Multi-Status — 由WebDAV(RFC 2518)扩展的状态码,代表之后的消息体将是一个XML消息,并且可能依照之前子请求数量的不同,包含一系列独立的响应代码。
3xx: 重定向,按照 HTTP/1.0 版规范的建议,浏览器不应自动访问超过5次的重定向。
  300 Multiple Choices — 多重选择。链接列表。用户可以选择某链接到达目的地。最多允许五个地址。
  301 Moved Permanently — 所请求的页面已经转移至新的url。
  302 Found — 所请求的页面已经临时转移至新的url。
  303 See Other — 所请求的页面可在别的url下被找到。
    304 Not Modified — 未按预期修改文档。客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用。
  305 Use Proxy — 客户请求的文档应该通过Location头所指明的代理服务器提取。
  306 Unused — 此代码被用于前一版本。目前已不再使用,但是代码依然被保留。
  307 Temporary Redirect — 被请求的页面已经临时移至新的url。
4xx:客户端错误
  400 Bad Request — 服务器未能理解请求或是请求参数有误。
  401 Unauthorized — 被请求的页面需要用户名和密码。
  402 Payment Required — 此代码尚无法使用(为将来可能的需求预留的)
  403 Forbidden — 对被请求页面的访问被禁止。
  404 Not Found — 服务器无法找到被请求的页面。
    405 Method Not Allowed — 请求中指定的方法不被允许。
  406 Not Acceptable — 服务器生成的响应无法被客户端所接受。
  407 Proxy Authentication Required — 用户必须首先使用代理服务器进行验证,这样请求才会被处理。
  408 Request Timeout — 请求超出了服务器的等待时间。
  409 Conflict — 由于冲突,请求无法被完成。
  410 Gone — 被请求的页面不可用。
  411 Length Required"Content-Length — " 未被定义。如果无此内容,服务器不会接受请求。
  412 Precondition Failed — 请求中的前提条件被服务器评估为失败。
  413 Request Entity Too Large — 由于所请求的实体的太大,服务器不会接受请求。
  414 Request-url Too Long — 由于url太长,服务器不会接受请求。当post请求被转换为带有很长的查询信息的get请求时,就会发生这种情况。
    415 Unsupported Media Type — 由于媒介类型不被支持,服务器不会接受请求。
  416 — 服务器不能满足客户在请求中指定的Range头。
  417 Expectation Failed
5xx: 服务器错误.这类状态码代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。
  500 Internal Server Error — 请求未完成。服务器遇到不可预知的情况。
  501 Not Implemented — 请求未完成。服务器不支持所请求的功能。
  502 Bad Gateway — 请求未完成.服务器从上游服务器收到一个无效的响应。

HTTP消息

又称为HTTP头,由四部分组成,分别是请求头、响应头、普通头和实体头。

请求头:只出现在HTTP请求中,请求报头允许客户端向服务器端传递请求的附加信息和客户端自身的信息。
>>Accept:声明指定客户端能够接收哪些MIME类型的消息.如text/html
>>Accept-Charset:声明浏览器可以接受的字符编码集
Accept-Encoding:指定浏览器可以支持的web服务器返回内容压缩编码类型
Accept-Language:浏览器可接受的语言
Accept-Ranges:web服务器声明自己是否接受客户端获取网页实体的一部分
Age:当代理服务器用自己缓存的实体去响应请求是,该头部表明网页实体从产生到现在经过多长时间
Authorization:HTTP授权证书,当客户端接收到来自web服务端的
www-Authenicate响应时,用该头部来回应自己的身份验证信息给web服务器
Cache-Control:指定请求和响应遵循的缓存机制
connection:表示是否需要持久连接,HTTP1.1默认进行持久化连接
Content-Length:表示请求内容长度
Content-Type:表示请求的与实体对应的MIME信息,响应对象的类型
>>Cookie:常用来表示请求者身份。
Date:请求发送的日期和时间
Expect:请求的特定服务器行为
From:发出请求的用户的Email
>>Host:指定被请求资源的Internet主机和端口号
if-Modified-Since:如果请求的部分在指定时间之后被修改则请求成功,未被修改则返回304代码
if-None-Match:如果内容未改变返回304代码,参数为服务器先前发送的Etag,与服务器回应的Etag比较判断是否改变。
if-Range:如果实体未改变,服务器发送客户端丢失的部分,否则发送整个实体。参数也为Etag
if-Unmodified-Since:只在实体在指定时间之后未被修改才请求成功
Max-Forwards:限制信息通过代理和网关传送的时间
Pragma:用来包含实现特定的指令
Proxy-Authorization:连接到代理的授权证书
>>Range:可以请求实体的部分内容,多线程下载一定会用到此请求头。
>>Referer:先前网页的地址,当前请求网页紧随其后,即来路
TE:客户端愿意接受的传输编码,并通知服务器接受接受尾加头信息
Upgrade:向服务器指定某种传输协议以便服务器进行转换(如果支持)
>>User-Agent:请求报头域允许客户端将它的操作系统、浏览器和其他属性告诉服务器。
Via:通知中间网关或代理服务器地址,通信协议
Warning:关于消息实体的警告信息
>>X-Forwarded-For:XXF头,代表请求端的IP,可以有多个,逗号隔开。
响应头:根据请求向客户端发送的HTTP头
Accept-Ranges:表明服务器是否支持指定范围请求及哪种类型的分段请求
Access-Control-Allow-origin:配置有权限访问资源的域
Age:对某网络资源的有效的请求行为,不允许则返回405
Allow:对某网络资源的有效的请求行为,不允许则返回405
Cache-Control:告诉所有的缓存机制是否可以缓存及哪种类型
Content-Encoding:web服务器支持的返回内容压缩编码类型
Content-Language:响应体的语言
Content-Length:响应体的长度
Content-Location:请求资源可替代的备用的另一地址
Content-MD5:返回资源的MD5校验值
Content-Range:在整个返回体中本部分的字节位置
Content-Type:返回内容的MIME类型
Date:请求变量的实体标签的当前值
ETag:请求变量的实体标签的当前值
Expires:响应过期的日期和时间
>>Last-Modified:请求资源的最后修改时间
>>Location:用来重定向接收方到非请求URL的位置来完成请求或标识新的资源
Pragma:包括实现特定的指令,它可应用到响应链上的任何接收方
Proxy-Authenticate:它指出认证方案和可应用到代理的该URL上的参数
>>Refresh:告诉浏览器定时刷新浏览器。
Retry-After:如果实体暂时不可取,通知客户端在指定时间之后再次尝试
>>Server:web服务器软件名称(建议修改此头信息)
>>Set-Cookie:向客户端设置Cookie,可看到服务器向客户端发送的Cookie信息
Strict-Transport-Security:设置浏览器强制使用HTTPS访问
Trailer:指出头域在分块传输编码的尾部存在
Transfer-Encoding:文件传输编码
Vary:告诉下游代理是使用缓存响应还是从原始服务器请求
Via:告知代理客户端响应是通过哪里发送的
Warning:警告实体可能存在的问题
WWW-Authenticate:表明客户端请求实体应该使用的授权方案
X-Content-Type-Options:配置禁止MIME类型嗅探
X-Frame-Options:配置页面是否能出现在 <frame>, <iframe>, <embed>, <object> 等标签中,防止点击劫持。
X-XSS-Protection:配置XSS防护机制
普通头
在普通报文头中,有少数报头域用于所有的请求和响应消息,但并不用于被传输的实体只用于传输的消息。
实体头
请求和响应消息都可以传送一个实体头。实体头定义了关于实体正文和请求所标识的资源的元信息。元信息也就是实体内容的属性,包括实体信息类型、长度、压缩方法、最后一次修改时间等。
Content-Type:用于向接收方指示实体的介质类型。
Content-Encoding:被用作媒体类型的修饰符,他的值指示了已经被应用到实体正文的附加内容的编码。
Content-Length:用于指明实体正文的长度,以字节方式存储的十进制数字表示。
Last-Modified:用于指示资源的最后修改日期和时间。

HTTPS:全称Hypertext Transfer Protocol over Secure Socket Layer。通过安全传输机制进行传送数据,可保护网络传送的所有数据的隐秘型和完整性。 可以降低非侵入性拦截攻击的可能性。

HTTP协议和HTTPS协议的主要区别:

>>HTTP是超文本传输协议,信息是明文传输,HTTPS是具有安全性的SSL加密传输协议。
>>使用的连接方式不同。HTTP采用80端口连接,HTTPS采用443端口
>>HTTPS协议需要用到ca证书,一般免费证书很少,也有些web容器提供,如TOMCAT。而HTTP协议不需要。
>>HTTP连接相对简单,是无状态的,而HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,相对较安全。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值