智慧团建网站登录电脑版,哈尔滨优化关键词免费,wifi小程序搭建,南昌制作企业网站文章目录一.简介二.HTTP的请求与响应三.客户端HTTP请求1.格式2.请求方法四.常用的请求报头1.Host (主机和端口号)2.Connection (链接类型)3.Upgrade-Insecure-Requests (升级为HTTPS请求)4. User-Agent (浏览器名称)5. Accept (传输文件类型)6.Referer (页面跳转处)7.Accept-En…
文章目录一.简介二.HTTP的请求与响应三.客户端HTTP请求1.格式2.请求方法四.常用的请求报头1.Host (主机和端口号)2.Connection (链接类型)3.Upgrade-Insecure-Requests (升级为HTTPS请求)4. User-Agent (浏览器名称)5. Accept (传输文件类型)6.Referer (页面跳转处)7.Accept-Encoding文件编解码格式8.Accept-Language语言种类9. Accept-Charset字符编码10. Cookie Cookie11. Content-Type (POST数据类型)五.服务端HTTP响应六.常用的响应报头1. Cache-Controlmust-revalidate, no-cache, private。2. Connectionkeep-alive3. Content-Encoding:gzip4. Content-Typetext/html;charsetUTF-85. DateSun, 21 Sep 2016 06:18:21 GMT6. Expires:Sun, 1 Jan 2000 01:00:00 GMT7. Pragma:no-cache8.ServerTengine/1.4.69. Transfer-Encodingchunked10. Vary: Accept-Encoding11. Cookie 和 Session七.响应状态码一.简介
HTTP协议HyperText Transfer Protocol超文本传输协议是一种发布和接收 HTML页面的方法。
HTTPSHypertext Transfer Protocol over Secure Socket Layer简单讲是HTTP的安全版在HTTP下加入SSL层。
SSLSecure Sockets Layer 安全套接层主要用于Web的安全传输协议在传输层对网络连接进行加密保障在Internet上数据传输的安全。
HTTP的端口号为80 HTTPS的端口号为443
二.HTTP的请求与响应
HTTP通信由两部分组成 客户端请求消息 与 服务器响应消息 浏览器发送HTTP请求的过程 当用户在浏览器的地址栏中输入一个URL并按回车键之后浏览器会向HTTP服务器发送HTTP请求。HTTP请求主要分为“Get”和“Post”两种方法。 当我们在浏览器输入URL http://www.baidu.com 的时候浏览器发送一个Request请求去获取 http://www.baidu.com 的html文件服务器把Response文件对象发送回给浏览器。 浏览器分析Response中的 HTML发现其中引用了很多其他文件比如Images文件CSS文件JS文件。 浏览器会自动再次发送Request去获取图片CSS文件或者JS文件。 当所有的文件都下载成功后网页会根据HTML语法结构完整的显示出来了。
URLUniform / Universal Resource Locator的缩写统一资源定位符是用于完整地描述Internet上网页和其他资源的地址的一种标识方法。
基本格式scheme://host[:port#]/path/…/[?query-string][#anchor]
scheme协议(例如http, https, ftp) host服务器的IP地址或者域名 port#服务器的端口如果是走协议默认端口缺省端口80 path访问资源的路径 query-string参数发送给http服务器的数据 anchor锚跳转到网页的指定锚点位置
例如 ftp://192.168.0.116:8080/index http://www.baidu.com http://item.jd.com/11936238.html#product-detail
三.客户端HTTP请求
1.格式
URL只是标识资源的位置而HTTP是用来提交和获取资源。
客户端发送一个HTTP请求到服务器的请求消息包括以下四个部分组成请求行、请求头部、空行、请求数据
下图给出了请求报文的一般格式。 GET https://www.baidu.com/ HTTP/1.1
Host: www.baidu.com
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36
Accept: text/html,application/xhtmlxml,application/xml;q0.9,image/webp,*/*;q0.8
Referer: http://www.baidu.com/
Accept-Encoding: gzip, deflate, sdch, br
Accept-Language: zh-CN,zh;q0.8,en;q0.6
Cookie: BAIDUID04E4001F34EA74AD4601512DD3C41A7B:FG1; BIDUPSID04E4001F34EA74AD4601512DD3C41A7B; PSTM1470329258; MCITY-343%3A340%3A; BDUSSnF0MVFiMTVLcUh-Q2MxQ0M3STZGQUZ4N2hBa1FFRkIzUDI3QlBCZjg5cFdOd1pZQVFBQUFBJCQAAAAAAAAAAAEAAADpLvgG0KGyvLrcyfrG-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFaq3ldWqt5XN; H_PS_PSSID1447_18240_21105_21386_21454_21409_21554; BD_UPN12314753; sug3; sugstore0; ORIGIN0; bdime0; H_PS_645EC7e2ad3QHl181NSPbFbd7PRUCE1LlufzxrcFmwYin0E6b%2BW8bbTMKHZbDP0g; BDSVRTM0
2.请求方法
GET https://www.baidu.com/ HTTP/1.1根据HTTP标准HTTP请求可以使用多种请求方法。
HTTP 0.9只有基本的文本 GET 功能。
HTTP 1.0完善的请求/响应模型并将协议补充完整定义了三种请求方法 GET, POST 和 HEAD方法。
HTTP 1.1在 1.0 基础上进行更新新增了五种请求方法OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
HTTP 2.0未普及请求/响应首部的定义基本没有改变只是所有首部键必须全部小写而且请求行要独立为 :method、:scheme、:host、:path这些键值对。 HTTP请求主要分为Get和Post两种方法 GET是从服务器上获取数据POST是向服务器传送数据 GET请求参数显示都显示在浏览器网址上HTTP服务器根据该请求所包含URL中的参数来产生响应内容即“Get”请求的参数是URL的一部分。 例如 http://www.baidu.com/s?wdChinese POST请求参数在请求体当中消息长度没有限制而且以隐式的方式进行发送通常用来向HTTP服务器提交量比较大的数据比如请求中包含许多参数或者文件上传操作等请求的参数包含在“Content-Type”消息头里指明该消息体的媒体类型和编码
注意避免使用Get方式提交表单因为有可能会导致安全问题。 比如说在登陆表单中用Get方式用户输入的用户名和密码将在地址栏中暴露无遗。
四.常用的请求报头
1.Host (主机和端口号)
Host对应网址URL中的Web名称和端口号用于指定被请求资源的Internet主机和端口号通常属于URL的一部分。
2.Connection (链接类型)
Connection表示客户端与服务连接类型
Client 发起一个包含 Connection:keep-alive 的请求HTTP/1.1使用 keep-alive 为默认值。
Server收到请求后
如果 Server 支持 keep-alive回复一个包含 Connection:keep-alive 的响应不关闭连接如果 Server 不支持 keep-alive回复一个包含 Connection:close 的响应关闭连接。如果client收到包含 Connection:keep-alive 的响应向同一个连接发送下一个请求直到一方主动关闭连接。
keep-alive在很多情况下能够重用连接减少资源消耗缩短响应时间比如当浏览器需要多个文件时(比如一个HTML文件和相关的图形文件)不需要每次都去请求建立连接。
3.Upgrade-Insecure-Requests (升级为HTTPS请求)
Upgrade-Insecure-Requests升级不安全的请求意思是会在加载 http 资源时自动替换成 https 请求让浏览器不再显示https页面中的http请求警报。
HTTPS 是以安全为目标的 HTTP 通道所以在 HTTPS 承载的页面上不允许出现 HTTP 请求一旦出现就是提示或报错。
4. User-Agent (浏览器名称)
User-Agent是客户浏览器的名称以后会详细讲。
5. Accept (传输文件类型)
Accept指浏览器或其他客户端可以接受的MIMEMultipurpose Internet Mail Extensions多用途互联网邮件扩展文件类型服务器可以根据它判断并返回适当的文件格式。
举例 Accept: /表示什么都可以接收。
Acceptimage/gif表明客户端希望接受GIF图像格式的资源
Accepttext/html表明客户端希望接受html文本。
Accept: text/html, application/xhtmlxml;q0.9, image/*;q0.8表示浏览器支持的 MIME 类型分别是 html文本、xhtml和xml文档、所有的图像格式资源。
q是权重系数范围 0 q 1q 值越大请求越倾向于获得其“;”之前的类型表示的内容。若没有指定q值则默认为1按从左到右排序顺序若被赋值为0则用于表示浏览器不接受此内容类型。
Text用于标准化地表示的文本信息文本消息可以是多种字符集和或者多种格式的Application用于传输应用程序数据或者二进制数据。
6.Referer (页面跳转处)
Referer表明产生请求的网页来自于哪个URL用户是从该 Referer页面访问到当前请求的页面。这个属性可以用来跟踪Web请求来自哪个页面是从什么网站来的等。
有时候遇到下载某网站图片需要对应的referer否则无法下载图片那是因为人家做了防盗链原理就是根据referer去判断是否是本网站的地址如果不是则拒绝如果是就可以下载
7.Accept-Encoding文件编解码格式
Accept-Encoding指出浏览器可以接受的编码方式。编码方式不同于文件格式它是为了压缩文件并加速文件传递速度。浏览器在接收到Web响应之后先解码然后再检查文件格式许多情形下这可以减少大量的下载时间。
举例Accept-Encoding:gzip;q1.0, identity; q0.5, *;q0 如果有多个Encoding同时匹配, 按照q值顺序排列本例中按顺序支持 gzip, identity压缩编码支持gzip的浏览器会返回经过gzip编码的HTML页面。 如果请求消息中没有设置这个域服务器假定客户端对各种内容编码都可以接受。
8.Accept-Language语言种类
Accept-Langeuage指出浏览器可以接受的语言种类如en或en-us指英语zh或者zh-cn指中文当服务器能够提供一种以上的语言版本时要用到。
9. Accept-Charset字符编码
Accept-Charset指出浏览器可以接受的字符编码。
举例Accept-Charset:iso-8859-1,gb2312,utf-8 ISO8859-1通常叫做Latin-1。Latin-1包括了书写所有西方欧洲语言不可缺少的附加字符英文浏览器的默认值是ISO-8859-1. gb2312标准简体中文字符集; utf-8UNICODE 的一种变长字符编码可以解决多种语言文本显示问题从而实现应用国际化和本地化。 如果在请求消息中没有设置这个域缺省是任何字符集都可以接受。
10. Cookie Cookie
Cookie浏览器用这个属性向服务器发送Cookie。Cookie是在浏览器中寄存的小型数据体它可以记载和服务器相关的用户信息也可以用来实现会话功能以后会详细讲。
11. Content-Type (POST数据类型)
Content-TypePOST请求里用来表示的内容类型。
举例Content-Type Text/XML; charsetgb2312 指明该请求的消息体中包含的是纯文本的XML类型的数据字符编码采用“gb2312”。
五.服务端HTTP响应
HTTP响应也由四个部分组成分别是 状态行、消息报头、空行、响应正文 HTTP/1.1 200 OK
Server: Tengine
Connection: keep-alive
Date: Wed, 30 Nov 2016 07:58:21 GMT
Cache-Control: no-cache
Content-Type: text/html;charsetUTF-8
Keep-Alive: timeout20
Vary: Accept-Encoding
Pragma: no-cache
X-NWS-LOG-UUID: bd27210a-24e5-4740-8f6c-25dbafa9c395
Content-Length: 180945!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN ....
六.常用的响应报头
理论上所有的响应头信息都应该是回应请求头的。但是服务端为了效率安全还有其他方面的考虑会添加相对应的响应头信息从上图可以看到
1. Cache-Controlmust-revalidate, no-cache, private。
这个值告诉客户端服务端不希望客户端缓存资源在下次请求资源时必须要从新请求服务器不能从缓存副本中获取资源。
Cache-Control是响应头中很重要的信息当客户端请求头中包含Cache-Control:max-age0请求明确表示不会缓存服务器资源时,Cache-Control作为作为回应信息通常会返回no-cache意思就是说“那就不缓存呗”。
当客户端在请求头中没有包含Cache-Control时服务端往往会定,不同的资源不同的缓存策略比如说oschina在缓存图片资源的策略就是Cache-Controlmax-age86400,这个意思是从当前时间开始在86400秒的时间内客户端可以直接从缓存副本中读取资源而不需要向服务器请求。
2. Connectionkeep-alive
这个字段作为回应客户端的Connectionkeep-alive告诉客户端服务器的tcp连接也是一个长连接客户端可以继续使用这个tcp连接发送http请求。
3. Content-Encoding:gzip
告诉客户端服务端发送的资源是采用gzip编码的客户端看到这个信息后应该采用gzip对资源进行解码。
4. Content-Typetext/html;charsetUTF-8
告诉客户端资源文件的类型还有字符编码客户端通过utf-8对资源进行解码然后对资源进行html解析。通常我们会看到有些网站是乱码的往往就是服务器端没有返回正确的编码。
5. DateSun, 21 Sep 2016 06:18:21 GMT
这个是服务端发送资源时的服务器时间GMT是格林尼治所在地的标准时间。http协议中发送的时间都是GMT的这主要是解决在互联网上不同时区在相互请求资源的时候时间混乱问题。
6. Expires:Sun, 1 Jan 2000 01:00:00 GMT
这个响应头也是跟缓存有关的告诉客户端在这个时间前可以直接访问缓存副本很显然这个值会存在问题因为客户端和服务器的时间不一定会都是相同的如果时间不同就会导致问题。所以这个响应头是没有Cache-Controlmax-age*这个响应头准确的因为max-agedate中的date是个相对时间不仅更好理解也更准确。
7. Pragma:no-cache
这个含义与Cache-Control等同。
8.ServerTengine/1.4.6
这个是服务器和相对应的版本只是告诉客户端服务器的信息。
9. Transfer-Encodingchunked
这个响应头告诉客户端服务器发送的资源的方式是分块发送的。一般分块发送的资源都是服务器动态生成的在发送时还不知道发送资源的大小所以采用分块发送每一块都是独立的独立的块都能标示自己的长度最后一块是0长度的当客户端读到这个0长度的块时就可以确定资源已经传输完了。
10. Vary: Accept-Encoding
告诉缓存服务器缓存压缩文件和非压缩文件两个版本现在这个字段用处并不大因为现在的浏览器都是支持压缩的。
11. Cookie 和 Session
服务器和客户端的交互仅限于请求/响应过程结束之后便断开在下一次请求时服务器会认为新的客户端。
为了维护他们之间的链接让服务器知道这是前一个用户发送的请求必须在一个地方保存客户端的信息。
Cookie通过在 客户端 记录的信息确定用户的身份。
Session通过在 服务器端 记录的信息确定用户的身份。
七.响应状态码
响应状态代码有三位数字组成第一个数字定义了响应的类别且有五种可能取值。常见状态码
100~199表示服务器成功接收部分请求要求客户端继续提交其余请求才能完成整个处理过程。
200~299表示服务器成功接收请求并已完成整个处理过程。常用200OK 请求成功。
300~399为完成请求客户需进一步细化请求。例如请求的资源已经移动一个新地址、常用302所请求的页面已经临时转移至新的url、307和304使用缓存资源。
400~499客户端的请求有错误常用404服务器无法找到被请求的页面、403服务器拒绝访问权限不够。
500~599服务器端出现错误常用500请求未完成。服务器遇到不可预知的情况。
1xx:信息100 Continue
服务器仅接收到部分请求但是一旦服务器并没有拒绝该请求客户端应该继续发送其余的请求。
101 Switching Protocols
服务器转换协议服务器将遵从客户的请求转换到另外一种协议。2xx:成功200 OK
请求成功其后是对GET和POST请求的应答文档
201 Created
请求被创建完成同时新的资源被创建。
202 Accepted
供处理的请求已被接受但是处理未完成。
203 Non-authoritative Information
文档已经正常地返回但一些应答头可能不正确因为使用的是文档的拷贝。
204 No Content
没有新文档。浏览器应该继续显示原来的文档。如果用户定期地刷新页面而Servlet可以确定用户文档足够新这个状态代码是很有用的。
205 Reset Content
没有新文档。但浏览器应该重置它所显示的内容。用来强制浏览器清除表单输入内容。
206 Partial Content
客户发送了一个带有Range头的GET请求服务器完成了它。3xx:重定向300 Multiple Choices
多重选择。链接列表。用户可以选择某链接到达目的地。最多允许五个地址。
301 Moved Permanently
所请求的页面已经转移至新的url。
302 Moved Temporarily
所请求的页面已经临时转移至新的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
被请求的页面需要用户名和密码。
401.1
登录失败。
401.2
服务器配置导致登录失败。
401.3
由于 ACL 对资源的限制而未获得授权。
401.4
筛选器授权失败。
401.5
ISAPI/CGI 应用程序授权失败。
401.7
访问被 Web 服务器上的 URL 授权策略拒绝。这个错误代码为 IIS 6.0 所专用。
402 Payment Required
此代码尚无法使用。
403 Forbidden
对被请求页面的访问被禁止。
403.1
执行访问被禁止。
403.2
读访问被禁止。
403.3
写访问被禁止。
403.4
要求 SSL。
403.5
要求 SSL 128。
403.6
IP 地址被拒绝。
403.7
要求客户端证书。
403.8
站点访问被拒绝。
403.9
用户数过多。
403.10
配置无效。
403.11
密码更改。
403.12
拒绝访问映射表。
403.13
客户端证书被吊销。
403.14
拒绝目录列表。
403.15
超出客户端访问许可。
403.16
客户端证书不受信任或无效。
403.17
客户端证书已过期或尚未生效。
403.18
在当前的应用程序池中不能执行所请求的 URL。这个错误代码为 IIS 6.0 所专用。
403.19
不能为这个应用程序池中的客户端执行 CGI。这个错误代码为 IIS 6.0 所专用。
403.20
Passport 登录失败。这个错误代码为 IIS 6.0 所专用。
404 Not Found
服务器无法找到被请求的页面。
404.0
没有找到文件或目录。
404.1
无法在所请求的端口上访问 Web 站点。
404.2
Web 服务扩展锁定策略阻止本请求。
404.3
MIME 映射策略阻止本请求。
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 Requested Range Not Satisfiable
服务器不能满足客户在请求中指定的Range头。
417 Expectation Failed
执行失败。
423
锁定的错误。5xx:服务器错误500 Internal Server Error
请求未完成。服务器遇到不可预知的情况。
500.12
应用程序正忙于在 Web 服务器上重新启动。
500.13
Web 服务器太忙。
500.15
不允许直接请求 Global.asa。
500.16
UNC 授权凭据不正确。这个错误代码为 IIS 6.0 所专用。
500.18
URL 授权存储不能打开。这个错误代码为 IIS 6.0 所专用。
500.100
内部 ASP 错误。
501 Not Implemented
请求未完成。服务器不支持所请求的功能。
502 Bad Gateway
请求未完成。服务器从上游服务器收到一个无效的响应。
502.1
CGI 应用程序超时。 ·
502.2
CGI 应用程序出错。
503 Service Unavailable
请求未完成。服务器临时过载或当机。
504 Gateway Timeout
网关超时。
505 HTTP Version Not Supported
服务器不支持请求中指明的HTTP协议版本