前言
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文件
华山资源网 Design By www.eoogi.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
华山资源网 Design By www.eoogi.com
暂无评论...
更新日志
2024年11月18日
2024年11月18日
- 群星《魅音绝唱》黑胶CD【WAV】
- 腾格尔.2002-四十独白【风潮】【WAV+CUE】
- 陈明真.1992-到哪里找那么好的人【华星】【WAV+CUE】
- 黄凯芹.2012-廿五年3CD【环球】【WAV+CUE】
- 证声音乐图书馆《七夕 爵士情缘》[320K/MP3][64.8MB]
- 证声音乐图书馆《七夕 爵士情缘》[FLAC/分轨][327.79MB]
- 杨泰瑞《City Boy》[320K/MP3][28.71MB]
- 胡彦斌《失业情歌》首版[WAV+CUE]
- 杨泰瑞《City Boy》[FLAC/分轨][159.66MB]
- APM亚流新世代《一起冒险》[320K/MP3][68.66MB]
- FIM《天伦乐》(DaydreamsAndLullabies)24K金碟[WAV+CUE]
- 【雨果唱片】中国管弦乐《鹿回头》
- 【雨果唱片】中国管弦乐《鹿回头》WAV
- APM亚流新世代《一起冒险》[FLAC/分轨][106.77MB]
- 崔健《飞狗》律冻文化[WAV+CUE][1.1G]