• Django解决跨域请求的问题



    CORS: cross-origin resource sharing  跨域资源共享

    CORS 需要浏览器和服务器同时支持,整个CORS的过程,都是浏览器自动完成,对于用户来说是无感的,先要实现 CORS 的关键是服务器,只要服务器实现了 CORS 接口,就可以跨域通信

    同源策略: 浏览器最核心最基础的安全功能

      何为同源:
        url的协议,主机,端口完全一致的时候就是同源(端口默认是80)
        http://example.com/
        http://example.com:80/
        http://example.com/path
      上面的每个url都是同源的

      
      以下每个资源都是不同源的
        http://example.com/
        http://example.com:8080/
        http://www.example.com/
        https://example.com/
        https://www.baidu.com/

    何为同源策略,简单理解,就当打开某个页面后,这个页面上的ajax请求默认只能向和页面同源的url发送http请求

    django-cors-headers 是一个处理cors所需服务器头信息的一个django应用

    1、安装django-cors-headers模块

        pip install django-cors-headers

    2、插入Django的APP配置中

    # 修改settings.py中的INSTALLED_APPS配置
    
    INSTALLED_APPS = ['corsheaders']
    

      

    3、注册CorsMiddleware中间件

    jdango查找中间件由上到下,注意要放到 CommonMiddleware 上面
    
    MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'corsheaders.middleware.CorsMiddleware', # CORS中间件
        'django.middleware.common.CommonMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
    ]
    

    4、跨域设置

    # 服务器运行跨域的域名
    
    CORS_ALLOWED_ORIGINS = [
        # 设置允许跨域的域名
        'http://localhost:8000',
        'http://127.0.0.1:8001',
    ]
    
    
    # 允许cookie跨域
    # CORS_ALLOW_CREDENTIALS = True
    
    # 允许所有来源跨域
    CORS_ALLOW_ALL_ORIGINS = True
    

      

    具体介绍可以查看   https://pypi.org/project/django-cors-headers/

  • 相关阅读:
    javascript小测试
    js设计模式--策略模式
    js设计模式--迭代器模式
    面试题自我解析
    js设计模式--工厂模式
    js设计模式--单体模式
    Python学习一:Python简介
    Angularjs学习笔记《一》
    实现字体最小,不是默认的12px,可以在视觉上最小达到6px
    css3 transform之后,图片的清晰度下降解决方式
  • 原文地址:https://www.cnblogs.com/pywen/p/15960986.html
Copyright © 2020-2023  润新知