Django-同源策略和跨域访问

2022-09-29  本文已影响0人  测试探索

一、同源策略

同源策略是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源。所以a.com下的js脚本采用ajax读取b.com里面的文件数据时会报错的

二、跨域

受同源策略的影响,不是同源的脚本,不能操作其他源下面的对象。想要操作另一个源下的对象就需要跨域

跨资源共享CORS(Cross-origin resource sharing)

CORS采用新的'origin:'请求头和新的Access-Control-Allow-Origin响应头来扩展HTTP。它允许服务器用头信息显示地列出源,或使用通配符来匹配所有的源并允许任何地址请求文件。因此,实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信。
从而它允许浏览器向跨源服务器,发出XMLHttpRequest请求,客服了AJAX只能同源使用的限制。

三、使用 django-cors-headers

3-1:安装
pip3 install django-cors-headers
3-2:在settings.py文件中添加应用
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'apps.users',
    # 跨域访问
    'corsheaders',
]
3-3:中间层设置
MIDDLEWARE = [
    # CORS的配置,放在第一位
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
3-4:添加白名单
# 添加 django-cors-headers 的白名单, 使白名单中的 host 可以进行跨域请求
CORS_ORIGIN_WHITELIST = (
    # 白名单:
    '127.0.0.1:8080',
    'localhost:8080',

    'http://www.meiduo.site:8080',
    'http://www.meiduo.site:8000',

)
# 允许携带cookie
CORS_ALLOW_CREDENTIALS = True
上一篇下一篇

猜你喜欢

热点阅读