django中的跨域方案

1,780 阅读1分钟

背景

由于浏览器的同源(协议、域名、端口号都相同)策略,不同域名之间是不能相互访问传递数据,要使两个域名间传递数据,后端要添加跨域访问支持。

跨域

后端可以使用django-cors-headers来实现跨域的支持,参考文档github.com/ottoyiu/dja…

安装

pip install django-cors-headers

注册

django项目的配置文件中添加内容如下:

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

中间件设置

中间件设置项要设置在第一位,替换掉django原有默认方案。

MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware',
    ...
]

白名单设置

django项目的配置文件中配置CORS_ORIGIN_WHITELIST将需要支持的域名添加进去。并将CORS_ALLOW_CREDENTIALS设置为True,表示允许设置cookie.并将ALLOWED_HOSTS将允许的域名主机添加进去。

# CORS
CORS_ORIGIN_WHITELIST = (
    '127.0.0.1:8080',
    'localhost:8080',
    'www.example.com:8081',
)
CORS_ALLOW_CREDENTIALS = True  # 允许携带cookie

ALLOWED_HOSTS = [
    'www.example.com',
    '127.0.0.1'
]