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 相关文章推荐
Mootools 1.2教程(3) 数组使用简介
Sep 14 Javascript
比较详细的关于javascript 解析json的代码
Dec 16 Javascript
js处理php输出时间戳对不上号的解决方法
Jun 20 Javascript
深入分析JQuery和JavaScript的异同
Oct 23 Javascript
Javascript实现的SHA-256加密算法完整实例
Feb 02 Javascript
JavaScript实现经典排序算法之选择排序
Dec 28 Javascript
React组件的三种写法总结
Jan 12 Javascript
用node和express连接mysql实现登录注册的实现代码
Jul 05 Javascript
C#实现将一个字符转换为整数
Dec 12 Javascript
vue计算属性时v-for处理数组时遇到的一个bug问题
Jan 21 Javascript
如何通过shell脚本自动生成vue文件详解
Sep 10 Javascript
vue二选一tab栏切换新做法实现
Jan 19 Vue.js
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
PHP简单系统数据添加以及数据删除模块源文件下载
2008/06/07 PHP
PHP操作xml代码
2010/06/17 PHP
PHP连接Nginx服务器并解析Nginx日志的方法
2015/08/16 PHP
Centos6.5和Centos7 php环境搭建方法
2016/05/27 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
2017/05/02 PHP
使用ucenter实现多站点同步登录的讲解
2019/03/21 PHP
ThinkPHP框架整合微信支付之刷卡模式图文详解
2019/04/10 PHP
安装docker和docker-compose实例详解
2019/07/30 PHP
laravel框架分组控制器和分组路由实现方法示例
2020/01/25 PHP
简单的前端js+ajax 购物车框架(入门篇)
2011/10/29 Javascript
JavaScript对象反射用法实例
2015/04/17 Javascript
js实现滑动触屏事件监听的方法
2015/05/05 Javascript
一道优雅面试题分析js中fn()和return fn()的区别
2016/07/05 Javascript
详解vue-cli + webpack 多页面实例应用
2017/04/25 Javascript
关于JavaScript中的this指向问题总结篇
2017/07/23 Javascript
移动端效果之IndexList详解
2017/10/20 Javascript
vue分页器组件编写方法详解
2019/06/28 Javascript
微信小程序使用echarts获取数据并生成折线图
2019/10/16 Javascript
vue祖孙组件之间的数据传递案例
2020/12/07 Vue.js
聊聊vue 中的v-on参数问题
2021/01/29 Vue.js
Python脚本实现网卡流量监控
2015/02/14 Python
Linux CentOS7下安装python3 的方法
2018/01/21 Python
python print输出延时,让其立刻输出的方法
2019/01/07 Python
python如何实现不用装饰器实现登陆器小程序
2019/12/14 Python
python shell命令行中import多层目录下的模块操作
2020/03/09 Python
详解基于canvas的视频遮罩插件
2018/01/04 HTML / CSS
印尼综合在线预订网站:Tiket.com(机票、酒店、火车、租车和娱乐)
2018/10/11 全球购物
四年级数学教学反思
2014/02/02 职场文书
远程培训的心得体会
2014/09/01 职场文书
爱晚亭导游词
2015/02/09 职场文书
雾霾停课通知
2015/04/24 职场文书
2015迎新晚会开场白
2015/07/17 职场文书
预备党员入党感言
2015/08/01 职场文书
导游词之广州陈家祠
2019/10/21 职场文书
nginx实现动静分离的方法示例
2021/11/07 Servers
漫改真人电影「萌系男友是燃燃的橘色」公开先导视觉图
2022/03/21 日漫