美文网首页
Django-同源策略和跨域访问

Django-同源策略和跨域访问

作者: 测试探索 | 来源:发表于2022-09-29 21:56 被阅读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
    

    相关文章

      网友评论

          本文标题:Django-同源策略和跨域访问

          本文链接:https://www.haomeiwen.com/subject/yeuqartx.html