浏览器同源策略之JSONP、CORS

对于不同的域名,如果是requests.get(url)请求,因为没有走浏览器,所以url不受限制,可以访问。但是如果用ajax请求,就不能直接向不同域名的url请求数据,原因是浏览器限制的,所以为了绕过浏览器这种限制,就有了JSONP。具体的应用如下:

客户端:
<script>

    $.ajax({
    url: 不同域名的url,
    type: 'GET',
    dataType: 'JSONP',
    jsonp: callback,  ---------> 作用:在请求的url的后面加上?callback='list',list作为对方的相应数据的包裹函数:
                        -------> HttpResponse(list(响应数据))
    jsonpCallback: 'list'
    
    })

</script>


请求数据的本质: 看似用了ajax请求数据,其实没有。如果把url放到HTML中的img标签、script标签,iframe标签的中的src中就不会被浏览器的同源访问限制住。所以基于这种思想,就有了JSONP的的作用本质。

在客户端做了两件事:
  1.创建了一个script标签:<script src='不同域名的url'></script>
  2.创建了一个函数:
    <script>
      function list(args){
        对请求到的args进行处理;
      }
    </script>
对方的返回数据也必须符合一个规则:
  func = request.GET.get('callback')
  HttpResponse(func(数据))

注意:
  JSONP只能发送GET请求,因为它的本质是把一个url放到src中,发送到对方,请求数据,而不能发送数据。

 CORS:

客户端:只管发送数据,不用设置其它的。
<script>

    $.ajax({
    url: 不同域名的url,
    type: 'POST',
    data:{},
    success:function(args){
      对响应的数据进行处理;
    }
}) </script>

远程:
只需要设置响应头:
  response = HttpResponse(数据)
  response['Access-Control-Allow-Origin'] = "客户端的域名" -----> 意思是只能指定的客户端可以请求,其它的不用。
  response['Access-Control-Allow-Origin'] = "*" -----> 所有的请求都可以
  return response

注意:
  ajax发送
  可以发送数据

基于cors的ajax请求:

  1. 支持跨域,简单请求:HEAD、GET、POST 

    简单请求:一次请求

  2. 支持跨域,非简单请求:除了简单请求都是非简单请求

    非简单请求:两次请求,在发送数据之前会先发送一次请求用于“预检”,只有“预检”通过后再发送一次请求用于数据传输。

  

非简单请求:
客户端:
<script>

    $.ajax({
    url: 不同域名的url,
    type: 'PUT',
    header:{'xxx':'y'},
    data:{},
    success:function(args){
      对响应的数据进行处理;
    }
}) </script>

远程:
if request.method == "OPTIONS":
    # 预检
    response = HttpResponse()
    response['Access-Control-Allow-Origin'] = "*" -----> 允许所有的客户端请求
    response['Access-Control-Allow-Method'] = "PUT" ---->"预检"请求时,允许请求方式
    response['Access-Control-Allow-Header'] = "xxx" ---->"预检"请求时,允许请求头
    response['Access-Control-Allow-Header'] = "xxx" ---->告诉请求端可以xxx请求头

    return response
  elif request.method == "GET":
     response = HttpResponse(数据)
     response['Access-Control-Allow-Origin'] = "*"
     return response

 
 

 

转载于:https://www.cnblogs.com/guomeina/p/7681366.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值