跨域问题

跨域问题

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'
]
原文地址:https://www.cnblogs.com/jianhaozhou/p/10156316.html