zoukankan      html  css  js  c++  java
  • Django解决跨域请求的问题

    对于想要利用django框架实现前后端分离,首要的问题是解决跨域请求的问题,什么是跨域请求?简单来说就是当前发起的请求的域与该请求指向的资源所在的域不一致。当协议+域名+端口号均相同,那么就是同一个域.

    解决方案

    1.JSONP,比较原始的方法,本质上是利用html的一些不受同源策略影响的标签,例如:<a>,<img>,<iframe>,<script>等,从而实现跨域请求,但是这种方法只支持GET的请求方式。
    2.CORS,Cross-Origin Resource Sharing,是一个新的W3C标准,它新增的一组HTTP首部字段,允许服务端声明哪些源站有权限访问哪些资源,换言之,它允许浏览器向声明了CORS的跨域服务器发出XML HttpRequest请求,从而客服Ajax只能同源使用的限制。在django框架中就是利用CORS来解决跨域请求的问题.

    1.安装:pip install django-cors-headers

    2.修改django项目中的settings.py

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'corsheaders',#这是我们的主角,放在新建的其他项目之前
        'app01',
    ]
    MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'corsheaders.middleware.CorsMiddleware', #注意顺序,必须放在这儿
        'django.middleware.common.CommonMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
    ]

    CORS_ALLOW_CREDENTIALS = True

    CORS_ORIGIN_ALLOW_ALL = True

    # 允许所有的请求头

    CORS_ALLOW_HEADERS = (' * ')

  • 相关阅读:
    工作多年月薪不过万,30岁的我是否该转行
    Hawkeye部署Github监控系统
    滴滴征战澳洲 全球“追击”优步
    滴滴征战澳洲 全球“追击”优步
    滴滴征战澳洲 全球“追击”优步
    滴滴征战澳洲 全球“追击”优步
    idea jdk版本切换
    idea jdk版本切换
    idea jdk版本切换
    idea jdk版本切换
  • 原文地址:https://www.cnblogs.com/s593941/p/10123873.html
Copyright © 2011-2022 走看看