zoukankan      html  css  js  c++  java
  • 解决Django REST framework中的跨域问题

    方案一:

    全局配置

    自定义中间件

    # my_md.py
    class MiddlewareMixin(object):
        def __init__(self, get_response=None):
            self.get_response = get_response
            super(MiddlewareMixin, self).__init__()
    
        def __call__(self, request):
            response = None
            if hasattr(self, 'process_request'):
                response = self.process_request(request)
            if not response:
                response = self.get_response(request)
            if hasattr(self, 'process_response'):
                response = self.process_response(request, response)
            return response
    
    
    class CORSMiddleware(MiddlewareMixin):
        def process_response(self,request,response):
            # 添加响应头
    
            # 允许你的域名来获取我的数据
            response['Access-Control-Allow-Origin'] = "*"
    
            # 允许你携带Content-Type请求头
            # response['Access-Control-Allow-Headers'] = "Content-Type"
    
            # 允许你发送DELETE,PUT
            # response['Access-Control-Allow-Methods'] = "DELETE,PUT"
            return response
    
    
    # setting.py
    MIDDLEWARE = [
        'app1.my_md.CORSMiddleware',
    ]

    局部配置

    from django.http import JsonResponse
    
    
    ret={'code':1000, 'data':list(Course.objects.all().values())}
    response = JsonResponse(ret)
    response['Access-Control-Allow-Origin'] = "*"
    return response

     方案二:

    在虚拟环境下安装pip install django-cors-headers

    在setting配置

    加入中间件 最好放在csrf的中间件前面  并且设置变量为True

    这样就解决了前后端分离的  跨域请求了

  • 相关阅读:
    java 锁
    mybatis 基本用法
    MYSQL 数据库
    进程与线程的区别
    EJB类型
    线程创建方式
    JDBC连接数据库的基本步骤
    org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch
    Centos中的/etc/sysconfig/network-scripts/ifcfg-eth0的正确配置
    利用maven导入依赖失败的问题
  • 原文地址:https://www.cnblogs.com/129TL/p/10115138.html
Copyright © 2011-2022 走看看