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

    跨域问题

    1.出现跨域问题的原因

    -同源策略(浏览器的安全策略)
    	-只允许当前页面朝当前域下发请求,如果向其他域发请求,请求可以正常发送,数据也可以拿回,但是被浏览器拦截了
    

    2.解决跨域问题

    -cors:只要服务器实现了CORS,就可以实现跨域资源共享
    -简单请求
    	-只发一次请求
    -非简单请求:
    	-发两次请求:一次预检(OPTION请求),只有服务端允许发请求,才能继续发第二次正常请求,一次真正的请求
    

    代码实现:

    写一个中间件在中间件允许cors,如此就解决了全站的跨域问题

    原理:根据django的请求的生命周期,所有的请求都会先经过中间件,所以在中间件中允许cors也就解决了跨域问题

    1.写一个中间件交myMiddle.py

    from django.utils.deprecation import MiddlewareMixin
    
    class MyCorsMiddle(MiddlewareMixin):
        def process_response(self,request,response):
            # 简单请求:
            # 允许http://127.0.0.1:8001域向我发请求
            # ret['Access-Control-Allow-Origin']='http://127.0.0.1:8001'
            # 允许所有人向我发请求
            response['Access-Control-Allow-Origin'] = '*'
            if request.method == 'OPTIONS':
                # 所有的头信息都允许
                response['Access-Control-Allow-Headers'] = '*'
            return response
    

    2.在setting中注册myMiddle.py

    MIDDLEWARE = [
        'api01.myMiddle.MyCorsMiddle'
    ]
    
  • 相关阅读:
    419. Battleships in a Board
    150. Evaluate Reverse Polish Notation
    153. Find Minimum in Rotated Sorted Array
    319. Bulb Switcher
    223. Rectangle Area
    iOS 常用到的宏#define
    VRAR 使用 SceneKit
    VR、AR、MR定义区别
    Swift 开源项目练习应用
    Swift3.0 UITextField
  • 原文地址:https://www.cnblogs.com/jianhaozhou/p/10156316.html
Copyright © 2011-2022 走看看