zoukankan      html  css  js  c++  java
  • ajax:

    AJAX

    js技术,发送请求的一种方式.

    特点:

     1. 异步
    1. 局部刷新

    2. 传输的数据量小

     $.ajax({
         url: '/test/',   // url路径
         type: 'post',    // 请求方式
         data: {          // 请求数据
             name: 'alex',
             age: 84,
             hobby: JSON.stringify(['吐口水', 'TESA', '姑娘', '毒鸡汤']),
        },
         success: function (res) {   // 响应成功的回调函数
             console.log(res);
             console.log(res.status);
             console.log(typeof(res))
        },
         error:function (res) { // 响应失败的回调函数
             console.log(res)
     
        }
     })

     

    上传文件

     $('#b1').click(function () {
     
             var form_obj = new FormData();  // enctype="multipart/form-data"
             form_obj.append('name', 'alex')
             form_obj.append('f1', $('#f1')[0].files[0])
     
             $.ajax({
                 url: '/upload/',
                 type: 'post',
                 data: form_obj,
                 processData: false, // 不需要处理编码方式
                 contentType: false, // 不需要处理contentType请求头
                 success:function (res) {
                     alert(res)
                }
     
            })
        })

     

    CSRF中间件

    1. process_request方法:

      从cookie中获取csrftoken的值,放到request.META中

    2. process_view方法:

      1. 判断视图是否使用csrf_exempt装饰器,使用了就不校验

      2. 判断请求方式是否是'GET', 'HEAD', 'OPTIONS', 'TRACE',如果是,也不校验

      3. 进行校验:

        1. csrf_token = request.META.get('CSRF_COOKIE') # cookie中获取csrftoken的值

      4. 请求方式是POST

        1. request_csrf_token = request.POST.get('csrfmiddlewaretoken', '')

        2. 获取不到,从头中获取x-csrftoken的值 = >request_csrf_token

        3. 进行比较csrf_token request_csrf_token的值:

          1. 对比成功 接收请求

          2. 对比不成功 拒绝请求

     

    前提

    有csrftoken的cookie:

    1. {% csrf_token %}

    2.  from django.views.decorators.csrf ensure_csrf_cookie

    方式一:

    给data中添加csrfmiddlewaretoken的键值对

    方式二:

    给headers添加x-csrftoken的键值对

     headers: { 
     'x-csrftoken': $('[name="csrfmiddlewaretoken"]').val()},

    方式三:

    导入文件

  • 相关阅读:
    Python2-列表
    C#1-变量和表达式
    Python1-变量
    grep输出带有颜色设置
    ftp服务器的安装与使用
    慕课网-哒哒租车系统
    ulimit 命令
    ARP与RARP
    return 和exit
    java运行机制
  • 原文地址:https://www.cnblogs.com/zhang-da/p/12109511.html
Copyright © 2011-2022 走看看