Django项目关于跨域cors及解决方案(配置项)

出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port)
三者之间任意与当前页面地址不同,即为跨域。

我们的前端和后端分别是两个不同的端口。现在,前端与后端分处不同的域名,这就涉及到跨域访问数据的问题,因为浏览器的同源策略,默认是不支持两个不同域间相互访问数据,而我们需要在两个域名间相互传递数据,这时我们就要为后端添加跨域访问的支持。

我们使用CORS来解决后端对跨域访问的支持。

使用django-cors-headers扩展
Github文档

安装(在虚拟环境中)

pip install django-cors-headers

添加应用

# settings.py
INSTALLED_APPS = (
    ...
    'corsheaders',
    ...
)

中间件设置

MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware', # 注意放到第一位
    ...
]

添加白名单

# CORS
CORS_ORIGIN_WHITELIST = (
    'http://127.0.0.1:8080',
    'http://localhost:8080',
    'http://IP:8080',
    'http://IP:8000'
)
CORS_ALLOW_CREDENTIALS = True  # 允许携带cookie
  • 凡是出现在白名单中的域名,都可以访问后端接口
  • CORS_ALLOW_CREDENTIALS 指明在跨域访问中,后端是否支持对cookie的操作。

你可能感兴趣的:(其他,跨域)