django的跨域问题

由于浏览器的同源策略(是一种浏览器为安全性考虑实施的安全策略),当从一个域上加载的脚本去访问另一个域的文档属性时,则会被拒绝。
同源指:URL由协议、域名、端口和路径组成,如果两个URL的协议、域名和端口相同,则为同源,否则为跨域。
跨域仅限于使用XMLHttpRequest对象和Fetch发起的HTTP请求。

Django如何解决跨域:
1、安装模块
pip install django-cors-headers

2、settings.py配置文件设置
添加App

添加中间件,需要注意放的位置,在SessionMiddleware后面以及CommonMiddleware前面

添加配置参数


CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_ALLOW_ALL = True
CORS_ORIGIN_WHITELIST = (
    'http://ops.xxx.com',
    'http://ops.xxx.com:8001',
)
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',
    'x-token',
)

到这一步所有的跨域配置其实都已经配置完成了,但是需要注意的是,有些前端访问时console依旧报跨域的问题,这里一般会有两种情况,也是我所遇到的,其实都很简单。
第一个是注意CORS_ALLOW_HEADERS,有些web前端可能还有其它的一些头部,当访问还是存在有跨域的时候,注意看是否存在上面没有的头部,添加上去即可。
第二个则是你后端Django程序报错,如果程序报错,前端console也会打印出跨域的信息出来,这个时候要检查一下Django代码。

上一篇:跨域访问方法介绍(7)--使用 CORS


下一篇:IDEA启动多个端口服务