python django 跨域解决

跨域问题:浏览器同源策略;前后端在不同域会导致跨域问题;不同源之间的网站通信就是跨域

解决方案:CORS扩展

1. 安装django-cors-headers

pip install django-cors-headers

2. 配置settings.py文件

# 添加应用
INSTALLED_APPS = [
    ...
    'corsheaders',
    ...
 ] 

# 中间层设置
MIDDLEWARE_CLASSES = (
    'corsheaders.middleware.CorsMiddleware',  # 注意顺序
    'django.middleware.common.CommonMiddleware',    
    ...
)

# 跨域增加忽略
CORS_ALLOW_CREDENTIALS = True # 允许携带cookie
CORS_ORIGIN_ALLOW_ALL = True # 允许所有主机跨域

# 添加白名单
CORS_ORIGIN_WHITELIST = (
    '127.0.0.1:8080',
    ...
) # 单个配置

CORS_ORIGIN_REGEX_WHITELIST  =(r'^(https?://)?(\w+\.)?jim\.com $',) # 正则配置

# 请求方法配置
CORS_ALLOW_METHODS = (
    'DELETE',
    'GET',
    'OPTIONS',
    'PATCH',
    'POST',
    'PUT',
    'VIEW',
)

# 请求头配置
CORS_ALLOW_HEADERS = (
    'XMLHttpRequest',
    'X_FILENAME',
    'accept-encoding',
    'authorization',
    'content-type',
    'dnt',
    'origin',
    'user-agent',
    'x-csrftoken',
    'x-requested-with',
    'Pragma',
)

注意:中间件CorsMiddleware必须放在django-common中间件的前一个

OK.

发布了52 篇原创文章 · 获赞 34 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43789195/article/details/102608165