跨域请求两种方法 jsonp和cors的实现


Posted in Javascript onNovember 11, 2018

在网站后台跨域访问另一服务器时,若被访问服务器未设置response[‘Access-Control-Allow-Origin'] = ‘*' 那么将无法获取。

jsonp方法

伪造ajax提交请求

请求端

// 基于jsonp
 // 原理: ajax 不能直接跨域 。 
 //向html中加入script标签 含有访问路径,script标签直接访问路径达到效果
 $('.get_service2').click(function () {

  // 伪造ajax提交请求
  $.ajax({
   url:'http://127.0.0.1:8001/service/',
   type: 'get',
   dataType: 'jsonp', // 伪造ajax 基于script
   jsonp: 'callbacks',
   // 随机取一个函数名发给请求方,对方解析好后返回过来
   success: function (data) {
    console.log(data)
   }
  })

 });

服务端

import json

def service(request):
 # 等待请求返回json数据
 func = request.GET.get('callbacks') # 固定方法名jsonp
 info = {'name': 'zok', 'age': 18}

 return HttpResponse("%s('%s')" % (func, json.dumps(info)))

jsonp获电视台节目案例

取到后并渲染到页面上

// 实例基于jsonp 电视台节目获取
  $('.get_service3').click(function () {

  // 伪造ajax 基于script
  $.ajax({
   url:'http://www.jxntv.cn/data/jmd-jxtv2.html',
   type: 'get',
   dataType: 'jsonp', // 伪造ajax 基于script
   jsonp: 'callbacks',
   jsonpCallback: 'list', // 拼函数名,如果不写就随机发一个函数名,对面解析好发回来

   success: function (data) {
    var html=""; //自己拼接

    // 循环取出数据 index 索引计次,weekday 每一天 必须要2个参数
    $.each(data.data,function (index, weekday) {
     //取到每天的数据
     html+='<p>'+weekday.week+'</p>';
     $.each(weekday.list,function (i,show) {
      html+='<a href='+show.link+'>'+show.name+'</a></br>'
     })
    });
    $('body').append(html)
   }
  })
 })

cors 最简单的方法

需要在服务端上加入白名单ponse[‘Access-Control-Allow-Origin'] = ‘*' 设置好能正常传送的ip

服务端

def serviceCors(request):
 """
 基于cors跨域
 白名单域名
 """
 info = {'name': 'zok', 'age': 18}
 response = HttpResponse(json.dumps(info))
 # 设置指定ip 或 * 全部通过
 response['Access-Control-Allow-Origin'] = 'http://127.0.0.1:8000' 
 response['Access-Control-Allow-Origin'] = '*'
 return response

请求端

// cors 跨域请求,方法最简单
 $('.get_service1').click(function () {
  $.ajax({
   url:'http://127.0.0.1:8001/serviceCors/',
   type:'get',
   success:function (data) {
    console.log(data)
   }
  })
 });

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
location对象的属性和方法应用(解析URL)
Apr 12 Javascript
JS 毫秒转时间示例代码
Sep 22 Javascript
js的正则test,match,exec详细解析
Jan 29 Javascript
js解决select下拉选不中问题
Oct 14 Javascript
JavaScript数据结构与算法之链表
Jan 29 Javascript
jquery实现简单的banner轮播效果【实例】
Mar 30 Javascript
微信小程序 教程之wxapp 视图容器 view
Oct 19 Javascript
深入理解jQuery.data() 的实现方式
Nov 30 Javascript
Bootstrap导航中表单简单实现代码
Mar 06 Javascript
解决Vue2.0自带浏览器里无法打开的原因(兼容处理)
Jul 28 Javascript
Node.js搭建小程序后台服务
Jan 03 Javascript
vue中多个倒计时实现代码实例
Mar 27 Javascript
浅谈webpack+react多页面开发终极架构
Nov 11 #Javascript
Vue项目引进ElementUI组件的方法
Nov 11 #Javascript
webpack中如何使用雪碧图的示例代码
Nov 11 #Javascript
vue组件从开发到发布的实现步骤
Nov 11 #Javascript
详解如何在Node.js的httpServer中接收前端发送的arraybuffer数据
Nov 11 #Javascript
基于Vue实现图片在指定区域内移动的思路详解
Nov 11 #Javascript
微信小程序车牌号码模拟键盘输入功能的实现代码
Nov 11 #Javascript
You might like
关于拼配咖啡,你要知道
2021/03/03 咖啡文化
function.inc.php超越php
2006/12/09 PHP
php 获取select下拉列表框的值
2010/05/08 PHP
php实现的简单检验登陆类
2015/06/18 PHP
PHP大神的十大优良习惯
2016/09/14 PHP
关于JS中的闭包浅谈
2013/08/23 Javascript
jquery获取子节点和父节点的示例代码
2013/09/10 Javascript
jQuery删除节点的三个方法即remove()detach()和empty()
2013/12/27 Javascript
ES6中Iterator与for..of..遍历用法分析
2017/03/31 Javascript
JavaScript常用截取字符串的三种方式用法区别实例解析
2018/05/15 Javascript
vuejs实现ready函数加载完之后执行某个函数的方法
2018/08/31 Javascript
详解vue-cli 3.0 build包太大导致首屏过长的解决方案
2018/11/10 Javascript
JavaScript实现飞舞的泡泡效果
2020/02/07 Javascript
JavaScript实现省市区三级联动
2020/02/13 Javascript
Python中函数参数设置及使用的学习笔记
2016/05/03 Python
Python基于matplotlib实现绘制三维图形功能示例
2018/01/18 Python
Django 浅谈根据配置生成SQL语句的问题
2018/05/29 Python
Python3实现转换Image图片格式
2018/06/21 Python
python实现京东秒杀功能
2018/07/30 Python
基于python生成器封装的协程类
2019/03/20 Python
python gensim使用word2vec词向量处理中文语料的方法
2019/07/05 Python
python数据预处理之数据标准化的几种处理方式
2019/07/17 Python
python实现从wind导入数据
2019/12/03 Python
Pytorch基本变量类型FloatTensor与Variable用法
2020/01/08 Python
HTML5 Canvas API中drawImage()方法的使用实例
2016/03/25 HTML / CSS
国际鲜花速递专家:Floraqueen
2016/11/24 全球购物
美国面料纺织品商城:Fabric.com
2017/06/28 全球购物
高级电工工作职责
2013/11/21 职场文书
陈欧广告词
2014/03/14 职场文书
防火标语大全
2014/10/06 职场文书
教师批评与自我批评材料
2014/10/16 职场文书
2015年学校总务工作总结
2015/07/20 职场文书
2015毕业设计工作总结
2015/07/24 职场文书
2016年社区党支部公开承诺书
2016/03/25 职场文书
2016年中学清明节活动总结
2016/04/01 职场文书
手把手教你使用TensorFlow2实现RNN
2021/07/15 Python