zoukankan      html  css  js  c++  java
  • 00,跨域的问题

    什么是跨域?
    浏览器的同源策略限制默认情况下前端页面和后端服务在不同服务器(域名、端口不一样)时,前端页面js无法请求到后端接口服务,即存在跨域问题。
    DRF是怎么解决跨域问题?
    • 使用Jsonp方式解决
    • 使用cors解决
    • 使用nginx代理解决
    使用Jsonp解决跨域的思路?
    由于浏览器中的<script>的src请求、<img>的src请求
    使用DRF的cors解决
    写restfull响应的接口要额外的加一个相应头。
    在哪加,在中间件里加
    response中只是响应了很多的数据,还需要增加响应头。
    在哪加,在中间件里加

     
     
     
    x
     
     
     
     
     
    1
    class MiddlewareMixin:
    2
        def __init__(self, get_response=None):
    3
            self.get_response = get_response
    4
            super().__init__()
    5
    
    
    6
        def __call__(self, request):
    7
            response = None
    8
            if hasattr(self, 'process_request'):
    9
                response = self.process_request(request)
    10
            if not response:
    11
                response = self.get_response(request)
    12
            if hasattr(self, 'process_response'):
    13
                response = self.process_response(request, response)
    14
            return response
    15
    
    
    16
    
    
    17
    class CORSMiddleware(MiddlewareMixin):
    18
        def process_response(self, request, response):
    19
            # 添加响应头
    20
            # 允许你的域名来获取我的数据
    21
            response['Access-Control-Allow-Origin'] = "*"
    22
    
    
    23
            # 允许携带Content-Type请求头
    24
            # response['Access-Control-Allow-Headers'] = 'Content-Type'    Content-Type = url-encodeing
    25
    
    
    26
            # 允许发送DELETE,PUT(复杂请求)
    27
            # response['Access-Control-Allow-Methods'] = "DELETE, PUT"
    28
    
    
    29
            return response
     
     
    再到settings.py中注册一下

     
     
     
     
     
     
     
     
     
    1
    MIDDLEWARE = [
    2
        ...
    3
        'app01.cors.CORSMiddleware',
    4
    ]
     
     
    在这里跨域还要分简单请求与复杂请求
    如果只是发送GET请求那么则说明是简单请求!反之为复杂请求!
  • 相关阅读:
    八款常用的 Python GUI 开发框架推荐
    scrapy + mogoDB 网站爬虫
    tkinter界面卡死的解决办法
    通过核心API启动单个或多个scrapy爬虫
    爬虫怎样绕过验证码?
    Python爬虫入门教程 33-100 电影评论数据抓取 scrapy
    Python开发 之 Websocket 的使用示例
    StringBuffer详解
    其实python正则表达式就这样简单明了
    ABAP和Java里的单例模式攻击
  • 原文地址:https://www.cnblogs.com/pontoon/p/10217396.html
Copyright © 2011-2022 走看看