JavaScript如何实现跨域请求


Posted in Javascript onAugust 05, 2016

什么是跨域请求?
简单的理解就是向不在同一个域名的服务器文件发出请求。这个还是用实际的例子来说明一下吧,比如baidu.com向cxyblog.com发送请求,这两个域名是不同的,那么这就是跨域了,出于安全性的考虑,这样是不允许的。另外需要注意的是不同子域名或者同域名不同端口之间或者相同域名不同协议等发送的请求也都算是跨域的,基本上可以为归为下面几类:
(1)http://www.baidu.comhttp://www.cxyblog.com发送请求
(2)http://www.cxyblog.comhttp://image.cxyblog.com发送请求
(3)http://www.baidu.com:8000http://www.cxyblog.com发送请求
(4)http://www.cxyblog.comhttps://www.cxyblog.com发送请求
(5)http://www.cxyblog.comhttp://112.65.242.67发送请求(假设域名www.cxyblog.com所对应的IP是112.65.242.67)
以上五种情况都算是跨域请求。

什么时候会用到跨域请求?
有时候我们需要使用Javascript进行Ajax操作的时候会碰到这种跨域请求操作的问题。
为什么直接使用javascript不能实现跨域请求?
由于安全的原因,javacript同源策略的限制,浏览器不允许Javascript请求跨域的资源。
如何解决javascript不能实现跨域请求的问题?
本文用到的解决方法是使用FlyJSONP应用JSONP实现跨域请求。FlyJSONP是一个轻量级的JavaScript类库,也被称作JSON插件,压缩后总大小约为3KB,不需要其他框架的支撑。
FlyJSONP官网地址:http://alotaiba.github.com/FlyJSONP/
那么该如何使用FlyJSONP类库实现跨域请求呢? 

(1)首先要加载FlyJSONP的Javascript脚本,即:

<script language="javascript" src="http://www.cxyblog.com/flyjsonp.min.js"></script> 

(2)然后要初始化FlyJSONP的实例,参数debug可设置为true或false,即:FlyJSONP.init({debug: true}),这个参数的意思就是是否打开调试信息,参数值为true或者false; 

(3)接下里就是使用get方法或post方法请求数据了,具体实例代码如下:

//FlyJSONP实现跨域GET
function getData(){
 FlyJSONP.init({debug:true});//初始化FlyJSONP的实例,参数debug可设置为true或false
 FlyJSONP.get({
  url:'http://www.cxyblog.com/article.json',//目标请求的URL
  parameters:{//请求参数
   limit:5
  },
  success:function(data){//发送请求成功
   console.log(data);
  },
  error:function(errorMsg){//发送请求失败
   console.log(errorMsg);
  }
 });
}
//FlyJSONP实现跨域POST
function postData(){
 FlyJSONP.init({debug:true});//初始化FlyJSONP的实例,参数debug可设置为true或false
 FlyJSONP.post({
  url:'http://www.cxyblog.com/article/new',
  parameters:{
   username:'cxyblog',
   api_key:'123456',
   title:'FlyJSONP',
   description:'test'
  },
  success:function(data){
   alert(data);
  }
 });
}

注意:服务端输出给客户端时,输出的必须是json字符串,否则客户端无法接收。

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

Javascript 相关文章推荐
JavaScript asp.net 获取当前超链接中的文本
Apr 14 Javascript
JQuery循环滚动图片代码
Dec 08 Javascript
JS小功能(onmouseover实现选择月份)实例代码
Nov 28 Javascript
iframe实用操作锦集
Apr 22 Javascript
jQuery插件AjaxFileUpload实现ajax文件上传
May 05 Javascript
Ionic + Angular.js实现验证码倒计时功能的方法
Jun 12 Javascript
详解React Native顶|底部导航使用小技巧
Sep 14 Javascript
jQuery响应滚动条事件功能示例
Oct 14 jQuery
详解如何在Angular优雅编写HTTP请求
Dec 05 Javascript
React Native中ScrollView组件轮播图与ListView渲染列表组件用法实例分析
Jan 06 Javascript
一文读懂vue动态属性数据绑定(v-bind指令)
Jul 20 Javascript
利用js canvas实现五子棋游戏
Oct 11 Javascript
JavaScript数组操作函数汇总
Aug 05 #Javascript
Jquery获取当前城市的天气信息
Aug 05 #Javascript
JavaScript蒙板(model)功能的简单实现代码
Aug 04 #Javascript
Three.js学习之Lamber材质和Phong材质
Aug 04 #Javascript
基于JavaScript实现在新的tab页打开url
Aug 04 #Javascript
同步文本框内容JS代码实现
Aug 04 #Javascript
JS打印组合功能
Aug 04 #Javascript
You might like
40年前的这部特摄片恐龙特级克塞号80后的共同回忆
2020/03/08 日漫
php将HTML表格每行每列转为数组实现采集表格数据的方法
2015/04/03 PHP
简介PHP的Yii框架中缓存的一些高级用法
2016/03/29 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
Laravel学习教程之request validation的编写
2017/10/25 PHP
TP5(thinkPHP框架)实现后台清除缓存功能示例
2019/05/29 PHP
Jquery实现简单的动画效果代码
2012/03/18 Javascript
JavaScript中检测变量是否存在遇到的一些问题
2013/11/11 Javascript
js网页实时倒计时精确到秒级
2014/02/10 Javascript
Jquery Ajax方法传值到action的方法
2014/05/11 Javascript
node.js使用npm 安装插件时提示install Error: ENOENT报错的解决方法
2014/11/20 Javascript
jQuery纵向导航菜单效果实现方法
2016/12/19 Javascript
nodejs 子进程正确的打开方式
2017/07/03 NodeJs
vue2.5.2使用http请求获取静态json数据的实例代码
2018/02/27 Javascript
node.js 基于cheerio的爬虫工具的实现(需要登录权限的爬虫工具)
2019/04/10 Javascript
微信小程序云开发如何使用npm安装依赖
2019/05/18 Javascript
bootstrap table列和表头对不齐的解决方法
2019/07/19 Javascript
JS数组方法push()、pop()用法实例分析
2020/01/18 Javascript
vue项目实现减少app.js和vender.js的体积操作
2020/11/12 Javascript
Python中删除文件的程序代码
2011/03/13 Python
python分析网页上所有超链接的方法
2015/05/08 Python
详细解析Python中__init__()方法的高级应用
2015/05/11 Python
python定时利用QQ邮件发送天气预报的实例
2017/11/17 Python
Python解决抛小球问题 求小球下落经历的距离之和示例
2018/02/01 Python
Python中判断输入是否为数字的实现代码
2018/05/26 Python
python实现公司年会抽奖程序
2019/01/22 Python
Django使用list对单个或者多个字段求values值实例
2020/03/31 Python
解决jupyter运行pyqt代码内核重启的问题
2020/04/16 Python
无需压缩软件,用python帮你操作压缩包
2020/08/17 Python
django使用graphql的实例
2020/09/02 Python
html5 application cache遇到的严重问题
2012/12/26 HTML / CSS
欧洲著名的二手奢侈品网站:Vestiaire Collective
2020/03/07 全球购物
拾金不昧通报表扬范文
2015/05/05 职场文书
教师聘用意向书
2015/05/11 职场文书
青涩记忆观后感
2015/06/18 职场文书
2016年班主任培训心得体会
2016/01/07 职场文书