方案一:
全局配置
自定義中間件
# 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
這樣就解決了前后端分離的 跨域請求了