http报文
程序员文章站
2024-03-15 13:44:29
...
url遵循一种格式
url第一部分称为方案 大部分通常是http协议(http://)
第二部分是服务器的因特网地址(www.baidu.com(www万维网))
其他部分是web服务器上的某个资源
get方法就是负责从服务器截取一个文档 post方法会向服务器发送一个需要处理的数据 options 用于确定web服务器的一般功能或者web服务器处理特定
- GET方法用于请求服务器端发送某个资源
- HEADER方法跟GET方法类似,区别就是不返回主体
- PUT方法用于向服务器端修改、插入数据
- POST方法用于向服务器端发送数据
- TRACK方法用于向服务器端请求报文在发送的过程中经过了什么修改,主要用于测试
- OPTIONS用于请求服务器告知其支持什么功能
- DELETE用于向服务器删除某个指定的资源
- 扩展方法其实类似于自定义方法
- 状态码
- 100-199 信息提示性状态码
- 200-299 成功状态码 (常见200表示请求成功)
- 300-399 重定向状态码 (常见302重定向)
- 400-499 客户端错误状态码 (常见404,请求资源不存在)
常见状态码
状态码 原因短语 含义
200 ok 成功 请求的所有数据都在响应主体内
400 Bad Request 用于告知客户端发起了一个错误的请求
401 unauthorized(未授权) 需要输入用户名和密码
403 Forbidden 服务器拒绝请求,可在响应主体中告知原因
404 not found(未找到) 服务器无法找到所请求url对应资源
408 Request Timeout 超时提醒
----------------------------------------------------------
报文的语法
//请求报文
<method> <request-URL> <version>
<headers>
<entity-body>
//响应报文
<version> <status> <reason-phrase>
<headers>
<entity-body>
------------------------------------------------------------------
首部
首部分为通用首部、请求首部、响应首部、主体首部、扩展首部
通用首部 就是客户端和服务器都可以使用的通用首部
通用的信息性首部 首部 描述 Connection 允许客户端和服务器指定与请求/响应连接有关的选项 Date 提供了日期的时间标志,说明报文是什么时间创建的 MIME-Version 给出了发送端使用的MIME版本 Trailer 如果报文采用了分块传输编码方式,就可以用这个首部列出位于报文 拖挂部分的首部集合 Transfer-Encoding 告知接收端为了保证报文的可靠传输,对报文采用了什么编码方式 Update 给出了发送端可能想要“升级”使用的新版本或协议 Via 显示了报文经过的中间节点(代理、网关) 通用缓存首部 首部 描述 Cache-Control 用于随报文传送缓存指示 Pragma 另一种随报文传送指示的方式,但并不专用缓存
请求首部 它们为服务器提供一些额外信息,比如客户端希望接受什么类型的数据
首部 描述 Client-IP 提供了运行客户端的机器的IP地址 From 提供了客户端用户的E-mail地址 Host 给出了接收请求的服务器的主机名和端口号 Referer 提供了包含当前请求URL的文档的URL UA-Color 提供了与客户端显示器的显示颜色有关的信息 UA-CPU 给出了客户端CPU的类型或制造商 UA-Disp 提供了与客户端显示器(屏幕)能力有关的信息 UA-OS 给出了运行在客户端机器上的操作系统名称及版本 UA-Pixels 提供了客户端显示器的像素信息 User-Agent 将发起请求的应用程序名称告知服务器 Accept首部 首部 描述 Accept 告诉服务器能够发送那些媒体类型 Accept-Charset 告诉服务器能够给发送那些字符集 Accept-Encoding 告诉服务器能够发送那些编码方式 Accept-Language 告诉服务器能够发送那些语言 TE 告诉服务器可以使用那些扩展传输编码 条件请求首部 首部 描述 Expect 允许客户端列出某请求所要求的服务器行为 If-Match 如果实体标记与文档当前的实体标记相匹配,就获取这份文档 If-Modified-Since 除非在某个指定的日期之后资源被修改过,否则就限制这个请求 If-None-Match 如果提供的实体标记与当前文档的标记不相符,就获取文档 If-Range 允许对文档的某个范围进行条件请求 If-Unmodified-Since 除非在某个指定日期之后资源没有被修改过,否则就限制这个请求 Range 如果服务器支持范围请求,就请求资源的指定范围 安全请求首部 首部 描述 Authorization 包含了客户端提供给服务器,以便对其自身进行认证的数据 Cookie 客户端用它向服务器传送一个令牌————它并不是真正的安全首部, 但确实隐含了安全功能 Cookie2 用来说明请求端支持的cookie版本 代理请求首部 首部 描述 Max-Forward 在通往源端服务器的路径上,将请求转发给其他代理或网关的最大次 数————与TRACE方法一同使用 Proxy-Authorization 与Authorization首部相同,但这个首部是在与代理进行认证时使用 Proxy-Connection 与Connection首部相同,但这个首部是在与代理建立连接时使用的
响应首部 响应报文有自己的首部集 以便客户端提供信息(比如客户端在与那种类型的服务器进行交互,比如谁在发送响应 响应者的功能)
响应的信息性首部 首部 描述 Age (从最初创建开始)响应持续时间 Public 服务器为其资源支持的请求方法列表 Retry-After 如果资源不可用的话,在此日期或时间重试 Server 服务器应用程序软件的名称和版本 Title 对HTML文档来说,就是HTML文档的源端给出的标题 Warning 比原因短语中更详细的警告报文 协商首部 首部 描述 Accept-Ranges 对此资源来说,服务器可接受的范围类型 Vary 服务器查看的其他首部的列表,可能会使响应发生变化;也就是说, 这是一个首部列表,服务器会根据这些首部的内容挑选处最合适的资 源版本发送个客户端 安全响应首部 首部 描述 Proxy-Authenticate 来自代理的对客户端的质询列表 Set-Cookie 不是真正的安全首部,但隐含有安全功能;可以在客户端设置一个 令牌,以便服务器对客户端进行标志 Set-Cookie2 与Set-Cookie类似 WWW-Authenticate 来自服务器的对客户端的质询列表
实体首部用于应对实体主体部分的首部 比如 可以用实体首部来说明实体主体部分的数据类型
实体的信息性首部 实体首部可以用来描述HTTP报文的负荷 首部 描述 Allow 列出了可以对此实体执行的请求方法 Location 告知客户端实体实际上位于何处;用于将接收端丁香到资源的位置 上去 内容首部内容首部提供了与实体内容有关的特定信息说明了其类型尺寸以及处理它所需的其他有用信息 首部 描述 Content-Base 解析主体中的相对URL时使用的基础URL Content-Encoding 对主体执行的任意编码方式 Content-Language 理解主体时最适宜使用的自然语言 Content-Length 主体的长度或者尺寸 Content-Location 资源实际所处的位置 Content-MD5 主体的MD5校验和 Content-Range 在整个资源中此实体表示的字节范围 Content-Type 这个主体的对象类型 实体缓存首部 通用的缓存首部说明了如何或什么时候进行缓存 首部 描述 ETag 与此实体相关的实体标记 Expires 实体不再有效,要从原始的源端再次获取此实体的日期和时间 Last-Modified 这个实体最后一次被修改的日期和时间
扩展首部是非标准的首部 由应用程序开发者创建 未添加到已批准的HTTP规范中
推荐阅读
-
CakePHP: HTTPS HTTP页面跳转导致登录信息丢失_PHP教程
-
Apache PHP利用HTTP缓存协议原理解析及应用_PHP
-
http://www.12306.cn/mormhweb/k php 更新数据库中断的解决方法
-
:zend framework在地址:http://127.0.0.1/zf/index,不能成功
-
实现获取http内容的php函数分享
-
PHP易用的http客户端:curlpp
-
异步 HTTP 客户端:async-http-php
-
Apache HTTP Server 配置有关问题
-
PHP中HTTP方式下的Gzip压缩传输方法举偶
-
php获取ip的三个属性区别介绍(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)_PHP教程