zoukankan      html  css  js  c++  java
  • django之http

    一 http协议介绍

     http协议(Hyper Text Transfer Protocol):超文本传输协议,是基于应用层的面向对象协议,靠tcp协议和IP来传输数据,请求和响应是http协议的基本概念。

     http协议工作于客户端与服务端架构之上,浏览器作为http客户端通过url向HTTP服务端发送所有请求。

    二 http特点

     1 简单快速:浏览器向服务端发送请求时,只需要传送请求的方法和路径。

      请求方法:GET,POST,HEAD,不同方法有着不同的联系类型。

     2 灵活:http传输可以是任意的数据类型,由Content_Type控制。

     3 无连接:每次只限制一次请求,服务器一处理玩请求并受到客户端的应答后就断开链接。这样就可以节省传输时间。

     4 无状态:对于事物的处理没有记忆的能力。

    三 http请求协议

     什么叫做请求协议:浏览器请求服务端的数据格式,也叫做请求格式

     请求的格式:

    请求首行;        // 请求方式 请求路径 协议和版本,例如:GET /index.html HTTP/1.1
    请求头信息;      // 请求头名称:请求头内容,即为key:value格式,例如:Host:localhost
    空行;           // 用来与请求体分隔开
    请求体。         // GET没有请求体,只有POST有请求体。
    

      GET请求:

    GET /562f25980001b1b106000338.jpg HTTP/1.1
    Host    img.mukewang.com
    User-Agent    Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36
    Accept    image/webp,image/*,*/*;q=0.8
    Referer    http://www.imooc.com/
    Accept-Encoding    gzip, deflate, sdch
    Accept-Language    zh-CN,zh;q=0.8
    

     http默认的请求的方法是GET,数据跟着url后面,由?分割开url和数据,多个参数之间是由&符号分隔开,空格转为+号,文字就会直接用BASE64加密,没有请求体数据,大小有限制,并且请求的数据会暴露在地址栏中。 

     GET常用的操作:在地址栏直接给出url,点击页面的一次超链接,还有form表单默认是GET请求,但是可以设置为POST请求。

    POST请求:

    POST / HTTP1.1
    Host:www.wrox.com
    User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
    Content-Type:application/x-www-form-urlencoded
    Content-Length:40
    Connection: Keep-Alive
    
    name=Professional%20Ajax&publisher=Wiley
    

      POST请求方法:数据放在请求体里面的,请求的数据大小没有限制,对于GET请求来说,POST请求数据比较安全。

    四 http响应协议

     服务器接收到客户端请求后会返回一个http的响应消息。

     响应格式:http响应也是有四个部分组成,分别是:响应首行(状态码),响应头,空行和响应体。

     实例:

    HTTP/1.1 200 OK
    Date: Fri, 22 May 2009 06:07:21 GMT
    Content-Type: text/html; charset=UTF-8
    
    <html>
          <head></head>
          <body>
                <!--body goes here-->
          </body>
    </html>
    
    第一部分:状态行,由HTTP协议版本号, 状态码, 状态消息 三部分组成。
    
    第一行为状态行,(HTTP/1.1)表明HTTP版本为1.1版本,状态码为200,状态消息为(ok)
    第二部分:消息报头,用来说明客户端要使用的一些附加信息
    
    第二行和第三行为消息报头,
    Date:生成响应的日期和时间;Content-Type:指定了MIME类型的HTML(text/html),编码类型是UTF-8
    第三部分:空行,消息报头后面的空行是必须的
    第四部分:响应正文,服务器返回给客户端的文本信息。
    
    空行后面的html部分为响应正文。
    

      状态码响应的含义:

    状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类别:
    1xx:指示信息--表示请求已接收,继续处理
    2xx:成功--表示请求已被成功接收、理解、接受
    3xx:重定向--要完成请求必须进行更进一步的操作
    4xx:客户端错误--请求有语法错误或请求无法实现
    5xx:服务器端错误--服务器未能实现合法的请求
    
    常见状态码:
    OK                        //客户端请求成功
    Bad Request               //客户端请求有语法错误,不能被服务器所理解
    Unauthorized              //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 
    Forbidden                 //服务器收到请求,但是拒绝提供服务
    Not Found                 //请求资源不存在,eg:输入了错误的URL
    Internal Server Error     //服务器发生不可预期的错误
    Server Unavailable        //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
    

     request:请求头   response:响应头。

    User_Aaent:判断是否是浏览器发送的请求。

    cookie:做验证防护

    host:请求的数据

    referer:防盗链相关的问题,本次跳转的来源

    accept:接收数据

    1、Host
    
    请求的web服务器域名地址
    
    2、User-Agent
    
    HTTP客户端运行的浏览器类型的详细信息。通过该头部信息,web服务器可以判断出http请求的客户端的浏览器的类型。
    
    3、Accept
    
    指定客户端能够接收的内容类型,内容类型的先后次序表示客户都接收的先后次序
    
    4、Accept-Lanuage
    
    指定HTTP客户端浏览器用来展示返回信息优先选择的语言
    
    5、Accept-Encoding
    
    指定客户端浏览器可以支持的web服务器返回内容压缩编码类型。表示允许服务器在将输出内容发送到客户端以前进行压缩,以节约带宽。
    而这里设置的就是客户端浏览器所能够支持的返回压缩格式。
    
    6、Accept-Charset
    
    HTTP客户端浏览器可以接受的字符编码集
    
    7、Content-Type
    
    显示此HTTP请求提交的内容类型。一般只有post提交时才需要设置该属性
    
    有关Content-Type属性值有如下两种编码类型:
    
    (1)“application/x-www-form-urlencoded”: 表单数据向服务器提交时所采用的编码类型,默认的缺省值就是“application/x-www-form-urlencoded”。
         然而,在向服务器发送大量的文本、包含非ASCII字符的文本或二进制数据时这种编码方式效率很低。
    
    (2)“multipart/form-data”: 在文件上载时,所使用的编码类型应当是“multipart/form-data”,它既可以发送文本数据,也支持二进制数据上载。
    
    当提交为表单数据时,可以使用“application/x-www-form-urlencoded”;当提交的是文件时,就需要使用“multipart/form-data”编码类型。
    View Code

     

  • 相关阅读:
    PAT顶级 1024 Currency Exchange Centers (35分)(最小生成树)
    Codeforces 1282B2 K for the Price of One (Hard Version)
    1023 Have Fun with Numbers (20)
    1005 Spell It Right (20)
    1092 To Buy or Not to Buy (20)
    1118 Birds in Forest (25)
    1130 Infix Expression (25)
    1085 Perfect Sequence (25)
    1109 Group Photo (25)
    1073 Scientific Notation (20)
  • 原文地址:https://www.cnblogs.com/fangjie0410/p/8033851.html
Copyright © 2011-2022 走看看