-跨域问题 -浏览器的:同源策略,浏览器拒毫不是当前域域返回的数据 -ip地址和端口号都相同才是同一个域 -如何解决: -CORS:跨域资源共享 -简单请求:发一次请求 -非简单请求:非简单请求是发送了两次请求,第一次是预检请求(OPTIONS请求),当预检经过,容许我发请求,再发送真实的请求 -解决跨域问题:(写好这个中间件配置一下) class MyCorsMiddle(MiddlewareMixin): def process_response(self, request, response): if request.method == 'OPTIONS': # 容许它 response['Access-Control-Allow-Headers'] = 'Content-Type' # obj['Access-Control-Allow-Headers']='*' # obj['Access-Control-Allow-Origin']='http://127.0.0.1:8000' response['Access-Control-Allow-Origin'] = '*' return response -别人写的cors-headers(了解一下)
由于浏览器的同源策略规定某域下的客户端在没明确受权的状况下,不能读写另外一个域的资源。而在实际开发中,先后端经常是相互分离的,而且先后端的项目部署也经常不在一个服务器内或者在一个服务器的不一样端口下。前端想要获取后端的数据,就必须发起请求,若是不作一些处理,就会受到浏览器同源策略的约束。后端能够收到请求并返回数据,可是前端没法收到数据。前端
pip3 install django-cors-headers
INSTALLED_APPS = [ ... 'corsheaders', ... ] MIDDLEWARE_CLASSES = ( ... 'corsheaders.middleware.CorsMiddleware', 'django.middleware.common.CommonMiddleware', # 注意顺序 ... ) #跨域增长忽略 CORS_ALLOW_CREDENTIALS = True CORS_ORIGIN_ALLOW_ALL = True CORS_ORIGIN_WHITELIST = ( '*' ) CORS_ALLOW_METHODS = ( 'DELETE', 'GET', 'OPTIONS', 'PATCH', 'POST', 'PUT', 'VIEW', ) CORS_ALLOW_HEADERS = ( 'XMLHttpRequest', 'X_FILENAME', 'accept-encoding', 'authorization', 'content-type', 'dnt', 'origin', 'user-agent', 'x-csrftoken', 'x-requested-with', 'Pragma', )
JWPpython
在Django中的视图函数中写入数据django
def myview(_request): response = HttpResponse(json.dumps({“key”: “value”, “key2”: “value”})) response[“Access-Control-Allow-Origin”] = “*” response[“Access-Control-Allow-Methods”] = “POST, GET, OPTIONS” response[“Access-Control-Max-Age”] = “1000” response[“Access-Control-Allow-Headers”] = “*” return response