跨域请求两种方法 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 相关文章推荐
jquery 日期分离成年月日的代码
May 14 Javascript
根据对象的某一属性进行排序的js代码(如:name,age)
Aug 10 Javascript
javascript常见操作汇总
Sep 03 Javascript
javascript中hasOwnProperty() 方法使用指南
Mar 09 Javascript
jquery实现在网页指定区域显示自定义右键菜单效果
Aug 25 Javascript
js实现文本框输入文字个数限制代码
Dec 25 Javascript
AngularJS入门心得之directive和controller通信过程
Jan 25 Javascript
Vue响应式原理详解
Apr 18 Javascript
jQuery选择器之属性过滤选择器详解
Sep 28 jQuery
jquery实现点击a链接,跳转之后,该a链接处显示背景色的方法
Jan 18 jQuery
Nuxt.js之自动路由原理的实现方法
Nov 21 Javascript
Vue的Eslint配置文件eslintrc.js说明与规则介绍
Feb 03 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
ThinkPHP提示错误Fatal error: Allowed memory size的解决方法
2015/02/12 PHP
php实现以只读方式打开文件的方法
2015/03/16 PHP
YII2框架中查询生成器Query()的使用方法示例
2020/03/18 PHP
JavaScript实际应用:innerHTMl和确认提示的使用
2006/06/22 Javascript
Jquery iframe内部出滚动条
2010/02/11 Javascript
jquery中$(#form :input)与$(#form input)的区别
2014/08/18 Javascript
Javascript判断文件是否存在(客户端/服务器端)
2014/09/16 Javascript
JavaScript函数详解
2014/11/17 Javascript
node.js中的console.log方法使用说明
2014/12/09 Javascript
一次$.getJSON不执行的简单记录
2016/07/19 Javascript
详细分析Javascript中创建对象的四种方式
2016/08/17 Javascript
Canvas实现放射线动画效果
2017/02/15 Javascript
利用node.js搭建简单web服务器的方法教程
2017/02/20 Javascript
浅谈JavaScript中的apply/call/bind和this的使用
2017/02/26 Javascript
深入理解Vue2.x的虚拟DOM diff原理
2017/09/27 Javascript
前端面试知识点目录一览
2019/04/15 Javascript
解决vue打包后刷新页面报错:Unexpected token
2019/08/27 Javascript
VueX模块的具体使用(小白教程)
2020/06/05 Javascript
浅谈JavaScript中等号、双等号、 三等号的区别
2020/08/06 Javascript
vuex的数据渲染与修改浅析
2020/11/26 Vue.js
[02:54]DOTA2英雄基础教程 撼地者
2014/01/14 DOTA
python多线程操作实例
2014/11/21 Python
pytorch神经网络之卷积层与全连接层参数的设置方法
2019/08/18 Python
Python 实现Numpy中找出array中最大值所对应的行和列
2019/11/26 Python
Python xlwings插入Excel图片的实现方法
2021/02/26 Python
高中毕业自我评价
2014/02/08 职场文书
企业党员一句话承诺
2014/05/30 职场文书
暑假社会实践证明格式
2014/10/28 职场文书
个人创业事迹材料
2014/12/30 职场文书
检讨书怎么写
2015/01/23 职场文书
捐款仪式主持词
2015/07/04 职场文书
离婚民事起诉状
2015/08/03 职场文书
幼儿园迎新生欢迎词
2015/09/30 职场文书
css3 实现文字闪烁效果的三种方式示例代码
2021/04/25 HTML / CSS
vue实现无缝轮播效果(跑马灯)
2021/05/14 Vue.js
JS实现扫雷项目总结
2021/05/19 Javascript