码迷,mamicode.com
首页 > Web开发 > 详细

web:3、httpd报文语法格式

时间:2015-09-30 01:08:41      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:linux

URL:Unifrom Resource Locator

    URL方案:scheme

    服务器地址:ip:port

    资源路径:

    http://www.magedu.com:80/bbs/index.php

基本语法:

    <scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>

    params:参数


http协议:stateless 无状态

服务器无法持续追踪访问者来源

cookie,session  追踪和保存用户浏览信息,


http事务:

        请求:request

         响应:response

报文语法格式

   request报文:

         <method> <request-URL> <version>       # 起始行

          <headers>              #   首部

           

            

          <entity-body>                        #实体

     response报文:

           <version> <status> <reason-phrase>

                      状态码    原因短语

           <headers>


           <entity-body>


<method>:请求方法,希望服务器端执行的动作,如GET、HEAD、POST等          

         GET:从服务器获取一个资源

         HEAD:只从服务器获取文档的响应首部

         POST:向服务器发送要处理的数据:

          PUT:将请求的主体部分存储在服务器上,

       DELETE:请求删除服务器上指定的文档

       TRAACE:追踪请求到达服务器中间经过的代理服务器

      OPTIONS:请求服务器返回对指定资源支持使用的请求方法

<request-url>:请求的资源,可以是相对路径,也可以是完整的URL

<version>:协议版本,格式HTTP/<major>。<minor>,如http/1.0

<headers>:HTTP首部

<status>:状态码

<reason-phrase>:原因短语,数字状态吗易读信息

<entity-body>:主体部分


协议查看或分析的工具:

               tcpdump,tshark,wireshark


version:HTTP/<major>.<minor>


status(状态码):

       三位数字,如200,301,302,404,502;标记请求处理过程中发生的情况

       1XX:信息提示性状态码

           100-101

       2XX:成功状态码

           200:OK

           201:Created OK

       3XX:重定向状态码

           301:Moved Permanebtly 永久重定向,在响应报文中使用首部“Location:URL”指定资源现在所在的位置

           302:Found 临时重定向,在响应报文中使用首部“Location:URL”指定临时资源位置

           304:Not Modified,条件式请求中使用

       4XX:客户端的错误

           403:Forbidden,请求被服务器拒绝

           404:Not Found,服务器无法找到请求的URL

           405:Method Not Allowed,不允许使用此方法请求响应的URL

       5XX:服务器类的错误

           500:Internal Server Error,服务器内部错误

           502:Bad Gateway:代理服务器从上游收到一条伪响应

           503:Service Unavailable,服务器此时无法提供服务,但将来可能可用

reason-phrase:状态码所标记的状态的简要描述

headers:每个请求或响应报文可包含任意个首部,每个首部都有首部名称,后面跟一个冒号,而后跟上一个可选空格,接着是一个值

entity-body:请求是附加的数据或响应时的数据


headers(HTTP首部)的分类:

      格式:

          Name: Value

       通用首部

            Date:报文的创建时间

            Connection:连接方式,如Keep-alive

            Via:显示报文经过的中间节点

            Cache-Control:控制缓存

            Pragma

    请求首部

        用户标明客户自己更倾向于支持使用的能力

           Accept:通知服务器自己可接收的媒体类型

           Accept-Charset:字符集

           Accept-Encoding:通知服务器自己可接收的编码格式。如gzip

           Accept-Language:语言

     信息式请求首部:

           client-IP:

           Host:请求的服务器名称和端口号

           Referer:包含当前正在请求的资源的上一级资源

           User-Agent:客户端代理类型

     条件式请求首部:

           Expect:期望的行为

   If-Modified-Since:是否在指定的时间以来修改过此资源

           If-Unmodified-Since:

   If-None-Match:本地缓存中存储的文件Etag标签是否与服务器不匹配

           If-Match

      跟安全相关的请求首部:

   Authorication:客户端提交给服务端的认证数据,如账号和密码

   Cookie:客户端发送给服务器端身份标识

   Cookie2

      代理请求首部:

             proxy-Authorization:向代理服务器认证

          

    响应首部

             Age:响应持续的时间

           Server:向客户端标明服务器程序名称和版本

协商首部:某资源有多种和表示方法时使用

     Accept-Ranges:对当前资源来讲,服务器所能够接受的范围类型

     Vary:首部列表,服务器会根据列表中的内容挑选出最适合的版本发送给客户端


   跟安全相关的响应首部

      Set-Cookie:服务器端在某客户端第一次请求时发给的令牌

      Set-Cookie2:

      WWW-Authenication:质询,即要求客户端提供账号和密码


    实体首部       

           Location:资源的新位置

              Allow:允许对此资源使用的请求方法

       内容首部:

         Contern-Encoding

         Contern-Language

         Contern-Length  实体的长度

         Contern-type 实体的对象类型

         Contern-Range 实体真正所处位置

         Contern-Location

       缓存首部:

         ETag:实体的扩展标签

         Expires:实体过期标签

         Last-Modified:上一次的修改时间

    

    扩展首部



二、curl命令

    curl是基于URL语法在命令行方式下工作的文件传输工具,它支持FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE及LDAP等协议。curl支持HTTPS认证,并且支持HTTP的POST、PUT等方法, FTP上传, kerberos认证,HTTP上传,代理服务器, cookies, 用户名/密码认证, 下载文件断点续传,上载文件断点续传,,http代理服务器管道( proxy tunneling), 甚至它还支持IPv6, socks5代理服务器,,通过http代理服务器上传文件到FTP服务器等等,功能十分强大。


curl的常用选项

    语法:

        curl [options] [URL...]

    -A/--user-agent <string> 设置用户代理发送给服务器,即告诉服务器浏览器类型

    -basic 使用HTTP基本验证

    --tcp-nodelay 使用TCP_NODELAY选项

    -e/--referer <URL> 来源网址,跳转过来的网址

    --cacert <file> 指定CA证书 (SSL)

    --compressed 要求返回是压缩的形势,如果文件本身为一个压缩文件,则可以下载至本地

    -H/--header <line>自定义头信息传递给服务器

    -I/--head 只显示响应报文首部信息

    --limit-rate <rate> 设置传输速度

    -u/--user <user[:password]>设置服务器的用户和密码

    -0/--http1.0 使用HTTP 1.0


另一个工具:elinks

            elinks [OPTION]...[URL]...          

                  -dump:不进入交互式模式,而直接将URL的内容输出到标准输出


三、mod_deflate模块

使用mod_deflate模块压缩页面优化传输速度,可以写为一行,也可以写多行,默认为gzip

适用场景:

       (1)节约带宽,额外消耗CPU,可能有些较老浏览器不支持

        (2)压缩适于压缩的资源,例如文本文件     

SetOutputFilter DEFLATE
# mod_deflate configuration
 
# Restrict compression to these MIME types
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/css
 
# Level of compression (Highest 9 - Lowest 1)默认为6
DeflateCompressionLevel 9
 
# Netscape 4.x has some problems.
BrowserMatch ^Mozilla/4 gzip-only-text/html
 
# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip
 
# MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html


web:3、httpd报文语法格式

标签:linux

原文地址:http://xiexiaojun.blog.51cto.com/2305291/1699330

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!