什么是跨域?
DRF是怎么解决跨域问题?
-
使用Jsonp方式解决
-
使用cors解决
-
使用nginx代理解决
使用Jsonp解决跨域的思路?
由于浏览器中的<script>的src请求、<img>的src请求
使用DRF的cors解决
写restfull响应的接口要额外的加一个相应头。
response中只是响应了很多的数据,还需要增加响应头。
在哪加,在中间件里加
<wiz_code_mirror>
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中注册一下
<wiz_code_mirror>
1
MIDDLEWARE = [
2
...
3
'app01.cors.CORSMiddleware',
4
]