CORS-解决Django中跨域问题

2019-06-22  本文已影响0人  越大大雨天

当在Django中进行前后端分离开发时,前端服务器与后端服务器是独立的,也就是不在同一个域名下。这时由浏览器的同源策略,默认不允许不同域间互访数据。为了使前后端服务器能相互访问,可以使用CORS来解决。

安装及配置

1. 安装

pip install django-cors-headers

2. 配置

INSTALLED_APPS = (
    ...
    'corsheaders',
    ...
)
MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware',
    ...
]

3. 白名单设置
CORS_ORIGIN_WHITELIST为授权进行跨站点HTTP请求的来源列表,默认为[]。
需要URI协议+主机名+端口指定。
不指明端口时,将使用默认端口(HTTPS = 443,HTTP = 80)。

# CORS
CORS_ORIGIN_WHITELIST = (
    'https://example.com' ,
    'https://sub.example.com' ,
    'http:// localhost:8080' ,
    'http://127.0.0.1:9000'
)
CORS_ALLOW_CREDENTIALS = True  # 允许携带cookie

4. cookies允许
CORS_ALLOW_CREDENTIALS如果为True,则允许cookie包含在跨站点HTTP请求中。
默认为False。

 CORS_ALLOW_CREDENTIALS = True  # 允许携带cookie

5. 允许的请求方法
不指定CORS_ALLOW_METHODS时默认允许以下方法跨域请求:

CORS_ALLOW_METHODS = (
    'DELETE',
    'GET',
    'OPTIONS',
    'PATCH',
    'POST',
    'PUT',
)

其他一些设置参考官方文档:https://pypi.org/project/django-cors-headers/

上一篇 下一篇

猜你喜欢

热点阅读