前言
CORS 即 Cross Origin Resource Sharing 跨域资源共享.
跨域请求分两种:简单请求、复杂请求.
简单请求
简单请求必须满足下述条件.
HTTP方法为这三种方法之一:HEAD、GET、POST
HTTP头消息不超出以下字段:
Accept、Accept-Language、Content-Language、Last-Event-ID
且Content-Type只能为下列类型中的某一个:
- application/x-www-from-urlencoded
- multipart/form-data
- text/plain.
==任何不满足上述要求的请求,都会被认为是复杂请求.
复杂请求会先发出一个预请求——预检,OPTIONS请求.==
浏览器的同源策略
无法跨域就是被浏览器的同源策略限制的.
也就是说,==浏览器会阻止非同源的请求.==
那什么是非同源呢?==域名或端口不同的,都属于非同源.==
==浏览器只会阻止表单以及Ajax请求的跨域,但不会阻止src请求跨域.==
所以,我们的cdn、图片等src请求都是正常的.
JsonP实现跨域
==JsonP跨域的原理是利用了浏览器不阻止src请求跨域来实现的.==
==JsonP只能实现GET请求跨域.==
首先 准备我们的视图文件
from django.http import HttpResponse from rest_framework.views import APIView class TestView(APIView): def get(self, request): return HttpResponse("handlerResponse('is ok')") # 注意返回的函数以及参数的格式
然后 HTML文件
<!DOCTYPE html> <html lang="zh-CN"> <head> <title>JsonP跨站请求测试</title> </head> <body> <script> // 函数名应为handlerResponse,这是一种约定俗成 function handlerResponse(data) { alert(data) } </script> <!--必须放在被执行函数的script标签的下面,否则会报错函数不存在--> <script src="/UploadFiles/2021-04-08/">好了 我们来测试吧
可以看到,我们成功实现了跨域获取数据.
JsonP解决跨域只能发送GET请求,并且实现起来前后端交互会比较多,现在几乎已经不在使用了
在Django中间件中添加响应头
可实现简单请求和复杂请求的跨域
第一步 准备中间件
from django.utils.deprecation import MiddlewareMixin class MyCors(MiddlewareMixin): def process_response(self, request, response): # 如下,等于'*'后,便可允许所有简单请求的跨域访问 response['Access-Control-Allow-Origin'] = '*' # 判断是否为复杂请求 if request.method == 'OPTIONS': response['Access-Control-Allow-Headers'] = 'Content-Type' response['Access-Control-Allow-Methods'] = 'PUT,PATCH,DELETE' return response写好之后,别忘记了去注册.
第二步 视图文件
from django.http import HttpResponse from rest_framework.views import APIView class TestView(APIView): def get(self, request): return HttpResponse("这是GET请求的数据") def post(self, request): return HttpResponse("这是POST请求的数据") def put(self, request): return HttpResponse("这是PUT请求的数")第三步 HTML文件
标签:
django,实现,跨域请求
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
白云城资源网 Copyright www.dyhadc.com
暂无“Django实现跨域请求过程详解”评论...
更新日志
2025年01月10日
2025年01月10日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]