HTTP协议的原理及常见的网页状态码

Posted bingguoguo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP协议的原理及常见的网页状态码相关的知识,希望对你有一定的参考价值。

一:DNS DNS:域名解析 正向解析:将域名解析为IP 反响解析:将IP解析为域名

DNS的特点:分布式、层次性

域名空间结构:根域、顶级域(国家/地区域名)、二级域

完整域名格式:FQDN=主机名.DNS后缀,例:www.souhu.com

DNS解析流程 以客户端访问 www.baidu.com.为例: 1. 查找本地 DNS 缓存及 hosts 文件 2. 查找 LDNS(local dns)服务器(缓存) 3. 查找根域服务器 4. 查找.com 顶级域服务器 5. LDNS 请求.com 服务器找到 baidu.com 服务器 6. LDNS 请求 baidu.com 服务器 7. Baidu.com 服务器返回 www.baidu.com 域名的 IP 解析记录给 LDNS 8. LDNS 返回给给客户机解析记录及缓存到本地

二、网页基本概述 网页:分为动态网页和静态网页

静态网页:由html语言编写,扩展名是.htm 、.html,可包含文本、图像、声音、FLASH动画、客户端脚本和ActiveX控件及JAVA小程序等。 没有后台数据库、是不含程序和可交互的网页。更新起来比较麻烦,适用于一般更新较少的展示型网站(公司首页)。每一个静态网页都有一个固定的 URL,且 URL 以.htm、 .html、 .shtml 等常见形式为后缀,而不含有“?”。

动态网页:由ASP(Active Server Pages), JSP(Java Server Pages), php (Hypertext Preprocessor)等开发语言编写的页面。以.aspx、 .asp、 .jsp、 .php、 .perl、 .cgi 等形式为后缀,并且在动态 网页网址中有一个标志性的符号——“?” 动态网页显示的内容可以随着时间、环境或者数据库操作的结果而发生改变。动态网页 与网页上的各种动画、滚动字幕等视觉上的动态效果没有直接关系,只要是采用了动态网站 技术生产的网页都可以称为“动态网页”。

xhtml:伪静态 便于用户更快的访问

HTTP协议的版本: 注:http 0.9已淘汰 HTTP 1.0 这是第一个在通讯中指定版本号的 HTTP 协议版本,至今仍被广泛采用,特别是在代理 服务器中。 ·HTTP 1.1 当前版本。持久连接被默认采用,并能很好地配合代理服务器工作。还支持以管道方式 同时发送多个请求,以便降低线路负载,提高传输速度。

get和POST提交方法的区别

GET 方法:从指定的服务器上获取数据 POST 方法:提交数据给指定服务器处理 GET 请求能被缓存 POST 请求不能被缓存 GET 请求会保存在浏览器的浏览记录里 POST 请求不会保存在浏览器的浏览记录里 GET 请求要有长度的限制 POST 请求没有长度的限制 主要用于获取数据 查询的字符串不会显示在 URL 中,比较安全 查询的字符串会显示在 URL 中,不安全

HTTP状态码

200 系列 与 300 系列都代表成功 400 系列 与 500 系列 代表失败

200 OK

请求已成功,请求所希望的响应头或数据体将随此响应返回。

201 Created

请求已经被实现,而且有一个新的资源已经依据请求的需要而建立,且其 URI 已经随 Location 头信息返回。假如需要的资源无法及时建立的话,应当返回 ‘202 Accepted‘。

202 Accepted

服务器已接受请求,但尚未处理。正如它可能被拒绝一样,最终该请求可能会也可能不 会被执行。在异步操作的场合下,没有比发送这个状态码更方便的做法了。 返回 202 状态码的响应的目的是允许服务器接受其他过程的请求

302 Move temporarily

请求的资源临时从不同的 URI 响应请求。由于这样的重定向是临时的,客户端应当继 续向原有地址发送以后的请求。只有在 Cache-Control 或 Expires 中进行了指定的情况下,这个响应才是可缓存的。

304 Not Modified

如果客户端发送了一个带条件的 GET 请求且该请求已被允许,而文档的内容(自上次 访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个状态码。 304 响应禁止 包含消息体,因此始终以消息头后的第一个空行结尾。

400 Bad Request

1、语义有误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提 交这个请求。 2、请求参数有误

401 Unauthorized

当前请求需要用户验证。该响应必须包含一个适用于被请求资源的 WWW-Authenticate 信息头用以询问用户信息。客户端可以重复提交一个包含恰当的 Authorization 头信息的请 求。如果当前请求已经包含了 Authorization 证书,那么 401 响应代表着服务器验证已经拒 绝了那些证书。

403 Forbidden

服务器已经理解请求,但是拒绝执行它。与 401 响应不同的是,身份验证并不能提供任 何帮助,而且这个请求也不应该被重复提交。

404 Not Found

请求失败,请求所希望得到的资源未被在服务器上发现。没有信息能够告诉用户这个状 况到底是暂时的还是永久的。出现这个错误的最有可能的原因是服务器端没有这个页面。

408 Request Timeout

请求超时。客户端没有在服务器预备等待的时间内完成一个请求的发送。客户端可以随 时再次提交这一请求而无需进行任何更改。

500 Internal Server Error

服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个 问题都会在服务器端的源代码出现错误时出现。

501 Not Implemented

服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的方法,并且无法支 持其对任何资源的请求。

502 Bad Gateway

作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。

503 Service Unavailable

由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是临时的,并且 将在一段时间以后恢复。

504 Gateway Timeout

作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI 标识出 的服务器,例如 HTTP、 FTP、 LDAP)或者辅助服务器(例如 DNS)收到响应。

HTTP报文详解

请求头:

GET / HTTP/1.1 //提交方法与 HTTP 协议版本20 / 27 Host: www.benet.wang //主机名 Connection: keep-alive //是否保持连接 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8 // 媒体类型 Upgrade-Insecure-Requests: 1 //支持升级不安全请求,既是不适用 http 而是 https User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36 //客户端类型 Accept-Encoding: gzip, deflate, sdch //网页支持压缩 Accept-Language: zh-CN,zh;q=0.8 //语言类型

响应头:

HTTP/1.1 200 OK //HTTP 协议版本与状态码 Date: Thu, 27 Oct 2016 15:50:23 GMT //日期与时间 Server: Apache/2 //服务器版本信息 X-Powered-By: PHP/5.6.21 //动态服务器版本信息 Content-Encoding: gzip //传输压缩 Vary: Accept-Encoding,User-Agent Keep-Alive: timeout=2, max=99 //长连接时间 Connection: Keep-Alive //支持长连接 Transfer-Encoding: chunked

Content-Type: text/html; charset=UTF-8 //媒体类型与字符集

以上是关于HTTP协议的原理及常见的网页状态码的主要内容,如果未能解决你的问题,请参考以下文章

http协议的状态码——400,401,403,404,500,502,503,301,302等常见网页错误代码

http协议的状态码——400,401,403,404,500,502,503,301,302等常见网页错误代码

HTTP协议状态码详解(HTTP Status Code)

常见HTTP状态码

HTTP 协议 -- 状态码

日常开发中常见的HTTP协议的状态码