跨域请求两种方法 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 相关文章推荐
javascript开发随笔一 preventDefault的必要
Nov 25 Javascript
select标记美化--JS式插件、后期加载
Apr 01 Javascript
用jquery生成二级菜单的实例代码
Jun 24 Javascript
jquery使用ajax实现微信自动回复插件
Apr 28 Javascript
JS实现图片放大镜效果的方法
Feb 27 Javascript
微信小程序 http请求详细介绍
Oct 09 Javascript
jquery与ajax获取特殊字符实例详解
Jan 08 Javascript
Vue 仿百度搜索功能实现代码
Feb 16 Javascript
vue.js开发实现全局调用的MessageBox组件实例代码
Nov 22 Javascript
element的el-table中记录滚动条位置的示例代码
Nov 06 Javascript
JQuery中的常用事件、对象属性与使用方法分析
Dec 23 jQuery
js将URL网址转为16进制加密与解密函数
Mar 04 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
如何优雅的使用 laravel 的 validator验证方法
2018/11/11 PHP
解决PHP curl或file_get_contents下载图片损坏或无法打开的问题
2019/10/11 PHP
整理8个很棒的 jQuery 倒计时插件和教程
2011/12/12 Javascript
快速解决FusionCharts联动的中文乱码问题
2013/12/04 Javascript
jquery获取radio值实例
2014/10/16 Javascript
js函数内变量的作用域分析
2015/01/12 Javascript
JavaScript数据结构和算法之二叉树详解
2015/02/11 Javascript
JS实现的几个常用算法
2016/11/12 Javascript
Vue.js实现简单ToDoList 前期准备(一)
2016/12/01 Javascript
angularJS 指令封装回到顶部示例详解
2017/01/22 Javascript
jquery实现input框获取焦点的简单实例
2017/01/26 Javascript
js 单引号替换成双引号,双引号替换成单引号的实现方法
2017/02/16 Javascript
json对象及数组键值的深度大小写转换问题详解
2018/03/30 Javascript
Python实现过滤单个Android程序日志脚本分享
2015/01/16 Python
在Python中使用HTMLParser解析HTML的教程
2015/04/29 Python
详解python的几种标准输出重定向方式
2016/08/15 Python
Python 读写文件和file对象的方法(推荐)
2016/09/12 Python
解决python3 网络请求路径包含中文的问题
2018/05/10 Python
python 除法保留两位小数点的方法
2018/07/16 Python
Python字典循环添加一键多值的用法实例
2019/01/20 Python
Python shelve模块实现解析
2019/08/28 Python
详解Python 字符串相似性的几种度量方法
2019/08/29 Python
python实发邮件实例详解
2019/11/11 Python
Python使用lambda抛出异常实现方法解析
2020/08/20 Python
Python爬取股票信息,并可视化数据的示例
2020/09/26 Python
Python读取图像并显示灰度图的实现
2020/12/01 Python
详解CSS3中Media Queries的相关使用
2015/07/17 HTML / CSS
HTML5 Canvas 实现圆形进度条并显示数字百分比效果示例
2017/08/18 HTML / CSS
荷兰网上药店:Drogisterij.net
2019/09/03 全球购物
如何定义一个可复用的服务
2014/09/30 面试题
面料业务员岗位职责
2013/12/26 职场文书
《雨点儿》教学反思
2014/04/14 职场文书
教师党员岗位承诺书
2014/05/29 职场文书
终止劳动合同协议书
2014/10/05 职场文书
12.4法制宣传日标语
2014/10/08 职场文书
《老人与海鸥》教学反思
2016/02/16 职场文书