最后更新:2022-07-11 07:05:19 手机定位技术交流文章
HTTP协议是 Hyper Text Transfer Protocol的一个缩写。它是用于分布式、协作和超级媒体信息系统的一种应用层协议。它是最广泛的互联网应用网络传输协议,所有 WW 文件必须符合这个标准。
HTTP被设计为网络浏览器和网络服务器之间的通信,但也可以用于其他目的。
HTTP是传输数据(HTML文件、图像文件、查询结果等)的TCP/IP通信协议。
HTTP协议在客户端-服务器架构上运行。浏览器作为HTTP客户端,通过URL发送所有请求给HTTP服务器。
网页服务器包括:Apache服务器,IIS服务器,Nginx
网络服务器根据收到的请求向客户端发送响应消息。
默认的HTTP端口号码是80,但您可以将其更改为8080或其他端口。
HTTP三个注释:
HTTP是一个通过可靠的链接交换信息的客户端/服务器(C/S)架构模型,是一个无状态请求/响应协议。
一个HTTP"客户端"是一个应用程序(Web浏览器或其他任何客户端),通过连接到服务器达到向服务器发送一个或多个HTTP的请求的目的。
HTTP“服务器”也是一种应用程序(通常是一个Web服务,例如Apache Web服务器或IIS服务器),接收客户端的请求并向客户端发送HTTP响应数据。
HTTP使用统一资源标识符(Uniform Resource Identifiers,URI)来传输数据和建立连接。
一旦建立连接后,数据消息就通过类似Internet邮件所使用的格式[RFC5322]和多用途Internet邮件扩展(MIME)[RFC2045]来传送。
客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成,下图给出了请求报文的一般格式。
HTTP响应也由四个部分组成:状态行、消息头条、空行和响应规则表达式,分别。
根据HTTP标准,HTTP请求可以使用多个请求方法。
HTTP1.0定义了三个请求方法:GET、 POST和HEAD。
HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
| 序号 | 方法 | 描述 |
|---|---|---|
| 1 | GET | 请求指定的页面信息并返回实体主体。 |
| 2 | HEAD | 与GET请求类似,它只在返回的响应中没有具体的内容来获取标题 |
| 3 | POST | 向指定资源提交数据处理请求(例如提交表格或上传文件)。 数据包含在请求机构中。 POST请求可能导致创建新的资源和/或修改现有资源。 |
| 4 | PUT | 从客户端发送到服务器的数据替换指定文档的内容。 |
| 5 | DELETE | 要求服务器删除指定的页面。 |
| 6 | CONNECT | HTTP/1.1协议保留了能将连接转换为管道模式的代理服务器。 |
| 7 | OPTIONS | 允许客户端查看服务器性能。 |
| 8 | TRACE | 逆显示服务器接收的请求主要用于测试或诊断。 |
| 9 | PATCH | 它是PUT方法的补充,用于本地更新已知资源。 |
当访客浏览网页时,查看器的浏览器向服务器发送该页面的位置请求。在浏览器接收和显示网页之前,此网页所在的服务器会返回一个包含 HTTP 状态码的信息头(server header)用以响应浏览器的请求。
HTTP 状态码的英文为HTTP Status Code。。
以下是常见的HTTP状态代码:
HTTP状态代码由三个十进制数字组成,第一个十进制数字定义了国家代码的类型。答复分为五个类别:信息答复(100–199),成功反应(200-299),重定位(300-399),客户端错误(400-499)和服务器错误(500-599):
| 分类 | 分类描述 |
|---|---|
| 1** | 服务器收到请求要求请求者继续执行操作的信息 |
| 2** | 操作成功接受并处理 |
| 3** | 重新定位需要进一步的操作完成请求 |
| 4** | 客户错误,包含语法错误的请求或无法完成请求 |
| 5** | 当服务器处理请求时发生服务器错误 |
HTTP状态代码列表:
| 状态码 | 状态码英文名称 | 中文描述 |
|---|---|---|
| 100 | Continue | 继续下去。 客户应该继续要求 |
| 101 | Switching Protocols | 切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议 |
| 200 | OK | 请求成功。 一般用于GET和 POST请求 |
| 201 | Created | 创建。 成功地请求并创建新的资源 |
| 202 | Accepted | 请求接受,但未处理完成 |
| 203 | Non-Authoritative Information | 非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本 |
| 204 | No Content | 无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档 |
| 205 | Reset Content | 如果服务器正常处理,用户端口(例如浏览器)应该重新定位文件视图。 这个返回代码可以清除浏览器的表格字段 |
| 206 | Partial Content | 内容的一部分。 服务器成功处理了一些GET请求 |
| 300 | Multiple Choices | 请求的资源可以包含多个位置,相应地返回用户终端(例如浏览器)选择的资源功能和地址列表 |
| 301 | Moved Permanently | 请求资源已经永久移到一个新的URI,返回信息将包含一个新的URI,浏览器将自动导航到新的URI。 今后任何新的请求都应该被一个新的URI取代 |
| 302 | Found | 它与301类似,但资源只能暂时移动。 用户应该继续使用原来的URI |
| 303 | See Other | 类似于301。 使用GET和 POST请求查看 |
| 304 | Not Modified | 请求的资源未被修改,当服务器返回此状态代码时,服务器不会返回任何资源。 客户通常通过提供一个标记,表示客户只在指定日期后返回修改的资源,以缓存访问的资源 |
| 305 | Use Proxy | 使用代理。 请求的资源必须通过代理访问 |
| 306 | Unused | 已经丢弃的HTTP状态代码 |
| 307 | Temporary Redirect | 临时重新定位。 类似于 302。 使用GET请求重新定位 |
| 400 | Bad Request | 客户端请求有一个语法错误,服务器无法理解 |
| 401 | Unauthorized | 请求用户身份验证 |
| 402 | Payment Required | 保留,将来使用 |
| 403 | Forbidden | 服务器了解客户端的请求,但拒绝执行请求 |
| 404 | Not Found | 服务器无法根据客户的要求找到资源(页面)。 通过这个代码,网站设计师可以设置个人页面“您请求的资源无法找到” |
| 405 | Method Not Allowed | 客户端请求中的方法被禁止 |
| 406 | Not Acceptable | 服务器不能根据客户端请求的内容特性完成请求 |
| 407 | Proxy Authentication Required | 请求要求代理人的认证,类似于401,但请求者应该使用代理人进行授权 |
| 408 | Request Time-out | 服务器等待客户端发送请求太长,太晚 |
| 409 | Conflict | 当服务器完成客户端PUT请求时,该代码可以返回,当服务器处理请求时发生冲突 |
| 410 | Gone | 客户请求的资源不再存在。 410与404不同,如果以前使用的资源现在以410代码永久删除,网站设计师可以通过301代码指定资源的新位置 |
| 411 | Length Required | 服务器无法处理客户端发送的不带Content-Length的请求信息 |
| 412 | Precondition Failed | 客户请求信息的前提错误 |
| 413 | Request Entity Too Large | 由于请求的实体太大,服务器无法处理请求,因此请求被拒绝。 为了防止客户端继续请求,服务器可能关闭连接。 如果服务器暂时无法处理,它将包含一个“再尝试后”响应 |
| 414 | Request-URI Too Large | 请求的URI太长(URI通常是URL),服务器无法处理 |
| 415 | Unsupported Media Type | 服务器无法处理请求附带的媒体格式 |
| 416 | Requested range not satisfiable | 客户端请求的范围无效 |
| 417 | Expectation Failed | 服务器无法满足预期请求标题信息 |
| 500 | Internal Server Error | 内部服务器错误,无法完成请求 |
| 501 | Not Implemented | 服务器不支持请求函数,无法完成请求 |
| 502 | Bad Gateway | 当服务器试图作为门户或代理执行请求时,远程服务器收到一个无效的响应 |
| 503 | Service Unavailable | 由于过载或系统维护,服务器暂时无法处理客户端请求。 延迟的长度可以包含在服务器的“再尝试后”项中 |
| 504 | Gateway Time-out | 作为门户或代理的服务器,不会及时从远程服务器接收请求。 |
| 505 | HTTP Version not supported | 服务器不支持请求的HTTP协议版本,无法处理它 |
HTTP消息又称为HTTP头(http header),由四部分组成,分别是请求头、响应头、普通头、和实体头。从名称看我们就知道他们所处的位置。
请求头只出现在HTTP请求中,
HTTP请求头提供关于请求、响应或其他发送实体的信息。
在本节我们将详细介绍HTTP响应标题信息。
| 应答头 | 说明 |
|---|---|
| Allow | 服务器支持哪些请求方法(例如GET、 POST等)。 |
| Content-Encoding | 文档编码方法。只有在解码后才能获得在“内容类型”标题中指定的内容类型。使用gzip压缩文档可以大大降低HTML文档的下载时间。Java的GZIPOutputStream可以方便地压缩gzip,然而,只有Unix上的Netscape和Windows上的IE4和IE5都支持它。因此,Servlet应该通过查看Accept-Encoding头(即request.getHeader(“Accept-Encoding”))检查浏览器是否支持gzip,返回由gzip压缩的HTML页面,用于gzip启用浏览器,返回其他浏览器的正常页面。 |
| Content-Length | 表示内容长度。只有当浏览器使用持久的HTTP连接时才需要这些数据。如果你想利用长期的联系,您可以将输出文件写入ByteArrayOutputStream,完成后查看其大小,然后将值放在“内容长度”头上,最后通过byteArrayStream.WriteTo(response.getOutputStream()发送内容。 |
| Content-Type | 指示文件的MIME类型。Servlet默认为text/plain,但通常需要明确指定为 text/html。由于经常需要设置内容类型,HttpServletResponse因此提供了一个特殊的方法setContentType。 |
| Date | 当前GMT时间.您可以使用setDateHeader设置这个标题,以避免转换时间格式的麻烦。 |
| Expires | 该文件应该什么时候被认为已经过时,因此不再存档? |
| Last-Modified | 最后一次文件更改.客户可提供一个日期,提供“如果-修改-自”请求标题,申请将被视为有条件的GET,只将返回更改时间较指定时间晚的文件,否则返回一个304(Not Modified)状态。最后修改也可以使用setDateHeader方法设置。 |
| Location | 指示客户端应该去何处检索文档。 位置通常不是直接设置的,而是通过HTTP ServletResponse sendRedirect 方法,同时设置状态代码为 302。 |
| Refresh | 指示浏览器应该更新该文档多久,以秒计。除了更新当前文件外,您可以通过setHeader("Refresh","5; URL=http://host/path")让浏览器阅读指定页面。注意此功能通常通过设置的HTML页面头部区域实现,这是因为,自动更新或重新引导对于不能使用CGI或Servlet的HTML编写者来说非常重要。但是,对瑟夫莱特来说,直接设置刷新头很容易.注意“更新”表示“在N秒后更新此页或访问指定页”,而不是“每N秒浏览这个页面或访问指定的页面”。因此,每次持续更新请求时,发送一次更新头,发送204个状态代码可以阻止浏览器继续更新,使用Refresh项或。注意,更新头条不属于HTTP 1.1的正式标准的一部分,而是一个扩展,但Netscape和IE都支持它。 |
| Server | 服务器名字。Servlet一般不设置这个值,而是由Web服务器自己设置。 |
| Set-Cookie | 设置与页面关联的cookie。Servlet 不应使用 response.setHeader ("Set-Cookie",..),相反,您应该使用HTTPServletResponse提供的特殊方法 addCookie。请参见以下关于Cookie设置的讨论。 |
| WWW-Authenticate | 客户应该在Authorization头中提供什么类型的授权信息?在包含401(Unauthorized)状态行的应答中这个头是必需的。例如,response.setHeader(“WWW-Authenticate”, “BASIC realm=\“executives\””)。注意,Servlet一般不处理这一问题,相反,网络服务器有专门的机制来控制访问密码保护的页面(例如htaccess)。 |
例如 curl https://ww.Baidu.com -i也可以查看服务器访问URL后返回的HTTP响应头条,如下所示:
此时脱离了浏览器来获取服务器响应和HTML数据,你可以发现,就某些方面而言,浏览器在HTTP协议方面只不过多了HTML渲染功能,让用户看到更直观的界面。
Content-Type(内容类型),一般指在网页中存在的内容类型,定义网络文件类型和网页编码,确定浏览器将读取该文件的格式和编码,这就是为什么你经常看到一些PHP网页点击和下载文件或图片。
Content-Type 标头告诉客户端实际返回的内容的内容类型。
语法格式:
常见的媒体格式类型如下:
与应用程序开始的媒体格式类型:
在上传文件时使用另一个常见的媒体格式:
本文由 在线网速测试 整理编辑,转载请注明出处。