博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
17-ajax向后端提交POST请求
阅读量:5769 次
发布时间:2019-06-18

本文共 2174 字,大约阅读时间需要 7 分钟。

ajax登录示例

urls.py

from django.conf.urls import urlfrom django.contrib import adminfrom app01 import views urlpatterns = [    url(r'^admin/', admin.site.urls),    url(r'^login_ajax/$', views.login_ajax, name='login_ajax'),    url(r'^index/$', views.index, name='index'),]
View Code

views.py

from django.shortcuts import render, HttpResponse, redirectimport json  def index(request):    return HttpResponse('this is index')  def login_ajax(request):    if request.method == "POST":        user = request.POST.get("user")        pwd = request.POST.get("pwd")        ret = {
"status": 0, 'url': ''} if user == "alex" and pwd == "123": ret['status'] = 1 ret['url'] = '/index/' return HttpResponse(json.dumps(ret)) return render(request, "login_ajax.html")
views.py

login_ajax.html

    
登录
login_ajax.html

静态文件需要配置,使用了jQuery和Bootstrap。

CSRF跨站请求伪造

 

方式一

将 csrfmiddlewaretoken: $("[name='csrfmiddlewaretoken']").val() 放在POST的请求体中。

示例中就是使用的这种方式。

 

方式二

给ajax的请增加X-CSRFToken的请求头,对应的值只能是cookie中的csrftoken的值。

所以我们要从cookie中提取csrftoken的值,jQuery不能去cookie,我们使用jquery.cookie的插件。。

HTML中导入jquery.cookie.js。 

方式二

 

方式三

使用$.ajaxSetup()给全局的ajax添加默认参数。

可以按照方式一设置data,也可以按照方式二设置请求头。

$.ajaxSetup({    data: {        csrfmiddlewaretoken: $("[name='csrfmiddlewaretoken']").val(),    }});$.ajaxSetup({    headers: {
"X-CSRFToken": $.cookie('csrftoken')},});
方式三

 

方式四

官方推荐方法(用到jquery.cookie插件):

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", $.cookie('csrftoken'));        }    }});
方式四

 

 

转载于:https://www.cnblogs.com/bai-max/p/9355372.html

你可能感兴趣的文章
Java判断是否为垃圾_Java GC如何判断对象是否为垃圾
查看>>
多项式前k项和java_多项式朴素贝叶斯softmax改变
查看>>
java数组只能交换0下标和n_编程练习-只用0交换排序数组
查看>>
OracleLinux安装说明
查看>>
标准与扩展ACL 、 命名ACL 、 总结和答疑
查看>>
使用@media实现IE hack的方法
查看>>
oracle体系结构
查看>>
Microsoft Exchange Server 2010与Office 365混合部署升级到Exchange Server 2016混合部署汇总...
查看>>
Proxy服务器配置_Squid
查看>>
【SDN】Openflow协议中对LLDP算法的理解--如何判断非OF区域的存在
查看>>
纯DIV+CSS简单实现Tab选项卡左右切换效果
查看>>
redis 常用命令
查看>>
EdbMails Convert EDB to PST
查看>>
Centos7同时运行多个Tomcat
查看>>
使用CocoaPods过程中的几个问题
查看>>
我的友情链接
查看>>
为eclipse安装maven插件
查看>>
Spring boot 整合CXF webservice 全部被拦截的问题
查看>>
Pinpoint跨节点统计失败
查看>>
机房带宽暴涨问题分析及解决方法
查看>>