django使用csrf防止跨域报错

Posted Bill

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django使用csrf防止跨域报错相关的知识,希望对你有一定的参考价值。

下载依赖

pip install django-cors-headers

注册应用

INSTALLED_APPS  =  [ 
    ... 
    \'corsheaders\' ,
    ... 
]

添加中间件

CorsMiddleware应放在尽可能高的,特别是可以产生如Django的回应任何中间件之前CommonMiddleware或白噪声的WhiteNoiseMiddleware
MIDDLEWARE  =  [ 
    ... 
    \'corsheaders.middleware.CorsMiddleware\' ,
      # 下面这句是默认的第一句
    \'django.middleware.common.CommonMiddleware\' ,
    ... 
]

为视图添加注解

from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def user_login(request):
  ...

额外的设置

# settings.py

# 跨域django-cors-headers配置
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_ALLOW_ALL = True

# 授权进行跨站点HTTP请求的来源列表
CORS_ALLOW_ORIGINS = [
    \'*\'
]
# 实际请求所允许的HTTP动词列表。默认为
CORS_ALLOW_METHODS  =  [ 
    \'DELETE\' ,
    \'GET\' ,
    \'OPTIONS\' ,
    \'PATCH\' ,
    \'POST\' ,
    \'PUT\' ,
]

# 发出实际请求时可以使用的非标准HTTP标头的列表。默认为:

CORS_ALLOW_HEADERS  =  [ 
    \'accept\' ,
    \'accept-encoding\' ,
    \'authorization\' ,
    \'content-type\' ,
    \'dnt\' ,
    \'origin\' ,
    \'user-agent\' ,
    \'x-csrftoken\' ,
    \'x-requested-with\' ,
]

更多配置信息

以上是关于django使用csrf防止跨域报错的主要内容,如果未能解决你的问题,请参考以下文章

新版chrome导致跨域报错,tomcat设置修复

axios03-解决请求头兼容导致跨域报错问题

Access to Image at 'file:///Users canvas本地图片跨域报错解决方案

django + vue.js 解决跨域问题

跨域?如何解决?同源策略?

跨域报错解决方案Access to XMLHttpRequest at ‘http://xxx.com/xxx‘ from origin ‘null‘ has been blocked by