<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC=1,5] >[success] # 什么是CSRF CSRF(Cross-site request forgery)跨站請求偽造,也被稱為“One Click Attack”或者Session Riding,通常縮寫為CSRF或者XSRF,是一種對網站的惡意利用。可以理解別人偽造了網站偷了你的cookie,然后進行攻擊 >[success] # django中如何使用 在django的setting.py文件中,有中間件插件配置變量名MIDDLEWARE,其中有一個'django.middleware.csrf.CsrfViewMiddleware',這就是django中的csrf中間插件,平常我們使用django進行post的請求時,如果不注釋'django.middleware.csrf.CsrfViewMiddleware',網站就會403報錯,我們如何來開啟這個中間件,并解決相應問題 >[danger] ##### csrf 配置 ~~~ 全局: 中間件 django.middleware.csrf.CsrfViewMiddleware 局部: 先引用方法: from django.views.decorators.csrf import csrf_exempt,csrf_protect 裝飾器: @csrf_protect,為當前函數強制設置防跨站請求偽造功能,即便settings中沒有設置全局中間件。 @csrf_exempt,取消當前函數防跨站請求偽造功能,即便settings中設置了全局中間件。 ~~~ >[danger] ##### 基本使用 ~~~ <form action="/login/" method="post"> {% csrf_token %} <input name="user" type="text"> <input name="pwd" type="password"> <input type="submit"> </form> ~~~ >[danger] ##### ajax 使用 ![](https://box.kancloud.cn/8e8b4863b3fe463e406df992d95a30a1_625x105.png) 上面的圖中發現,其實我們可以通過獲取瀏覽中的csrftoken字段來驗證csrf,所以只要取出對應的k,v就可以 ~~~ <form action="/login/" method="post"> {% csrf_token %} <input name="user" type="text"> <input name="pwd" type="password"> <input type="submit"> <input id="btn" type="button" value="提交按鈕"> </form> <script src="/static/jquery-1.12.4.js"></script> <script src="/static/jquery.cookie.js"></script> <script> $(function () { $('#btn').click(function () { $.ajax({ url:'/login/', type:'POST', data:{"user":'root',"pwd":"root"}, headers:{'X-CSRFtoken':$.cookie('csrftoken')}, success:function (arg) { alert(arg); } }) }) }) </script> ~~~ >[danger] ##### ajax 全局配置 ~~~ function csrfSafeMethod(method) { // these HTTP methods do not require CSRF protection return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method)); } $.ajaxSetup({ beforeSend: function(xhr, settings) { if (!csrfSafeMethod(settings.type) && !this.crossDomain) { xhr.setRequestHeader("X-CSRFToken", csrftoken); } } }); $(function () { $('#btn').click(function () { $.ajax({ url:'/login/', type:'POST', data:{"user":'root',"pwd":"root"}, headers:{'X-CSRFtoken':$.cookie('csrftoken')}, success:function (arg) { alert(arg); } }) }) }) </script> ··· ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看