• HTTP协议


    HTTP协议是:超文本传输协议,该协议规定了浏览器和万维网服务器之间相互通信的规则。

    1、客服端发送到服务器的为“请求协议

    2、服务器发送到客服端的为“响应协议

    http协议为无状态协议,

    代理服务器功能:

    1、提高访问速度,大多数代理服务器都有缓存功能

    2、突破限制

    3、隐藏那个身份

    url格式:

    schema://host[:port#]/path/.../[?query-string][#anchor]

    scheme               指定底层使用的协议(例如:http, https, ftp)

    host                   HTTP服务器的IP地址或者域名

    port#                 HTTP服务器的默认端口是80,这种情况下端口号可以省略。如果使用了别的端口,必须指明,例如 http://www.cnblogs.com:8080/

    path                   访问资源的路径

    query-string       发送给http服务器的数据

    anchor-             锚

    http协议定义了很多客服端与服务器交互的协议,基本的有4种,GET,POST,PUT,DELETE,一个url对应一个网络上的资源,而4中交互分别为:查、更新、增、删;


    一、请求协议

    请求首行; // 请求方式 请求路径 协议和版本,例如:GET /index.html HTTP/1.1

    请求头信息;// 请求头名称:请求头内容,即为key:value格式,例如:Host:localhost

    空行; // 用来与请求体分隔开

    请求体。 // GET没有请求体,只有POST有请求体。

    1、请求

    请求有get请求和post请求,http默认请求为get请求。

    get请求特点:

    1、没有请求体

    2、数据在1k范围内

    3、数据会暴露在url地址上

    4、在浏览器地址栏上输入url为get请求

    5、页面上的超链接为get请求,a标签

    6、表单提交数据默认为get请求,也可设置为post请求

    post请求特点:

    1、有请求体

    2、数据不会出现在地址栏中

    3、数据大小没有限制


    二、响应协议

    响应首行;

    响应头信息;

    空行;

    响应体

    响应头中状态码:

    响应首行为状态行:由HTTP协议版本号, 状态码, 状态消息 三部分组成

    HTTP/1.1中定义了5类状态码, 状态码由三位数字组成,第一个数字定义了响应的类别

    1XX  提示信息 - 表示请求已被成功接收,继续处理

    2XX  成功 - 表示请求已被成功接收,理解,接受

    3XX  重定向 - 要完成请求必须进行更进一步的处理

    4XX  客户端错误 -  请求有语法错误或请求无法实现

    5XX  服务器端错误 -   服务器未能实现合法的请求

    200:请求成功,浏览器会把响应体内容(通常是html)显示在浏览器中;

    404:请求的资源没有找到,说明客户端错误的请求了不存在的资源;

    500:请求资源找到了,但服务器内部出现了错误;

    302:重定向,当响应码为302时,表示服务器要求浏览器重新再发一个请求,服务器会发送一个响应头Location,它指定了新请求的URL地址;

    304:表示index.html与浏览器上次缓存的相 同,无需再次发送,浏览器可以显示自己的缓存页面,如果比对不同,那么说明index.html已经做了修 改,服务器会响应200。如果你不想使用本地缓存可以用Ctrl+F5 强制刷新页面

    400 Bad Request  客户端请求与语法错误,不能被服务器所理解

    403 Forbidden 服务器收到请求,但是拒绝提供服务

    404 Not Found请求资源不存在(输错了URL)


    Django中的request对象

    Django会将浏览器发送过来的请求对象,封装为HttpRequest 对象,django会将这个对象自动传递给响应的视图函数,一般视图函数约定俗成地使用 request 参数承接这个对象。 

    属性:

     1、HttpRequest.scheme  一个字符串,代表请求的方案,一般为 ‘http’ 或 ‘https’。

    2、HttpRequest.path  一个字符串,表示请求的路径组件(不含域名)。

    3、HttpRequest.path_info

    4、HttpRequest.method   一个字符串,表示请求使用的HTTP 方法。必须使用大写。

    5、HttpRequest.GET   一个类似于字典的对象,包含 HTTP GET 的所有参数。详情请参考 QueryDict 对象。

    6、HttpRequest.POST  一个类似于字典的对象,如果请求中包含表单数据,则将这些数据封装成 QueryDict 对象

    7、HttpRequest.encoding  一个字符串,表示提交的数据的编码方式

    8、HttpRequest.COOKIES  一个标准的Python 字典,包含所有的cookie。键和值都为字符串。

    9、HttpRequest.FILES  

    一个类似于字典的对象,包含所有的上传文件信息。FILES 中的每个键为<input type="file" name="" /> 中的name,值则为对应的数据。

      注意,FILES 只有在请求的方法为POST 且提交的<form> 带有enctype="multipart/form-data" 的情况下才会包含数据。否则,FILES 将为一个空的类似于字典的对象。

    10、HttpRequest.session  一个既可读又可写的类似于字典的对象,表示当前的会话。只有当Django 启用会话的支持时才可用。

    方法:

    1、HttpRequest.get_host()  

    2、HttpRequest.get_full_path()

    3、HttpRequest.build_absolute_uri(location)

    4、HttpRequest.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None)

    5、HttpRequest.is_secure()  如果请求时是安全的,则返回True即请求通是过 HTTPS 发起的。

    6、HttpRequest.is_ajax()  如果请求是通过XMLHttpRequest 发起的,则返回True

    7、HttpRequest.read(size=None)  

      像文件一样读取请求报文的内容主体,同样的,还有以下方法可用。

      HttpRequest.readline()

      HttpRequest.readlines()

      HttpRequest.xreadlines()

      其行为和文件操作中的一样。

      HttpRequest.__iter__():说明可以使用 for 的方式迭代文件的每一行。

  • 相关阅读:
    CSS3 非线性时间函数应用
    CSS3 animation动画与transition过渡比较
    JS 数组高阶函数 map、reduce、filter、sort等
    访问控制列表-ACL匹配规则
    C 函数——Day04
    让你的wordpress在新窗口打开链接
    EFI、UEFI、MBR、GPT的区别
    C 输入 & 输出——Day03
    C 数据类型——Day02
    博客园代码高亮
  • 原文地址:https://www.cnblogs.com/zjsthunder/p/9837558.html
Copyright © 2020-2023  润新知