django 使用django-cors-headers 解决跨域问题

0. 官网

官网https://pypi.org/project/django-cors-headers/

1. 安装

pip3 install django-cors-headers -i https://pypi.douban.com/simple

2. 配置

  • 如果是在linux,最好把下列配置中的参数,都配置上

2.1 app注册

INSTALLED_APPS = (
    ...
    'corsheaders',
    ...
)

2.2 中间件注册

  • 最好写在最顶层,
  • 必须写在CommonMiddleware中间件的上面
  • 因为需要在返回时,给当前请求添加一个'Access Control Allow Origin'
MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware',
    ...
]

2.3 白名单 

  • 不支持 '*' 的写法
# 3.0以上版本需要加协议,3.0以下不需要--->127.0.0.1:8000
CORS_ORIGIN_WHITELIST = (
    'http://127.0.0.1:8000',
    'http://127.0.0.1', # 不写端口,默认80
)

2.4 setting下面添加下面的配置


CORS_ORIGIN_ALLOW_ALL = True
# 实际请求所允许的请求方式列表。默认为:
CORS_ALLOW_METHODS = (
    'DELETE',
    'GET',
    'OPTIONS',
    'PATCH',
    'POST',
    'PUT',
    'VIEW',
)
# 发出实际请求时可以使用的非标准HTTP标头的列表。默认为:
CORS_ALLOW_HEADERS = (
    'XMLHttpRequest',
    'X_FILENAME',
    'accept-encoding',
    'authorization',
    'content-type',
    'dnt',
    'origin',
    'user-agent',
    'x-csrftoken',
    'x-requested-with',
    'Pragma',
)

3. 参数介绍

# 跨域请求时,是否运行携带cookie,默认为False
CORS_ALLOW_CREDENTIALS 


CORS_ORIGIN_ALLOW_ALL
如果为True,将不使用白名单,并且将接受所有来源。默认为False。


你可能感兴趣的:(python_web杂谈,cors,django)