关于python3.x: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' ,
]

更多配置信息

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理