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 相关文章推荐
jQuery数据显示插件整合实现代码
Oct 24 Javascript
js浮点数精确计算(加、减、乘、除)
Dec 26 Javascript
javascript 判断整数方法分享
Dec 16 Javascript
JavaScript实现在页面间传值的方法
Apr 07 Javascript
使用Javascript实现选择下拉菜单互移并排序
Feb 23 Javascript
jquery插件之文字间歇自动向上滚动效果代码
Feb 25 Javascript
jQuery基于扩展实现的倒计时效果
May 14 Javascript
AngularJS 整理一些优化的小技巧
Aug 18 Javascript
Vue.js每天必学之表单控件绑定
Sep 05 Javascript
AngularJS监听路由变化的方法
Mar 07 Javascript
文本溢出插件jquery.dotdotdot.js使用方法详解
Jun 22 jQuery
JavaScript的词法结构精华篇
Oct 17 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
IIS6.0 开启Gzip方法及PHP Gzip函数分享
2014/06/08 PHP
使用Yii2实现主从数据库设置
2016/11/20 PHP
PHP简单实现欧拉函数Euler功能示例
2017/11/06 PHP
JavaScript constructor和instanceof,JSOO中的一对欢喜冤家
2009/05/25 Javascript
使用JS CSS去除IE链接虚线框的三种方法
2013/11/14 Javascript
JQuery实现倒计时按钮具体方法
2013/11/14 Javascript
Javascript生成全局唯一标识符(GUID,UUID)的方法
2016/02/27 Javascript
Bootstrap实现带动画过渡的弹出框
2016/08/09 Javascript
基于Bootstrap的Java开发问题汇总(Spring MVC)
2017/01/15 Javascript
Javascript实现跨域后台设置拦截的方法详解
2017/08/04 Javascript
忘记ftp密码使用python ftplib库暴力破解密码的方法示例
2014/01/22 Python
python实现带声音的摩斯码翻译实现方法
2015/05/20 Python
python简单获取本机计算机名和IP地址的方法
2015/06/03 Python
python实现线程池的方法
2015/06/30 Python
python实现下载整个ftp目录的方法
2017/01/17 Python
使用PyInstaller将python转成可执行文件exe笔记
2018/05/26 Python
python实现连续图文识别
2018/12/18 Python
Python实现一个带权无回置随机抽选函数的方法
2019/07/24 Python
python3文件复制、延迟文件复制任务的实现方法
2019/09/02 Python
python调用API接口实现登陆短信验证
2020/05/10 Python
5 分钟读懂Python 中的 Hook 钩子函数
2020/12/09 Python
HTML5触摸事件实现移动端简易进度条的实现方法
2018/05/04 HTML / CSS
Juicy Couture Beauty官方网站:香水和化妆品
2019/03/12 全球购物
俄罗斯披萨、寿司和面食送货到家服务:2 Берега
2019/12/15 全球购物
大三自我鉴定范文
2013/10/05 职场文书
大学生党课思想汇报
2013/12/29 职场文书
物资采购方案
2014/06/12 职场文书
公司自我介绍演讲稿
2014/08/21 职场文书
2014年社区国庆节活动方案
2014/09/16 职场文书
暂住证证明
2015/06/19 职场文书
终止合同协议书范本
2016/03/22 职场文书
redis配置文件中常用配置详解
2021/04/14 Redis
分析Python list操作为什么会错误
2021/11/17 Python
Mysql 如何合理地统计一个数据库里的所有表的数据量
2022/04/18 MySQL
JS实现页面炫酷的时钟特效示例
2022/08/14 Javascript
Python TypeError: ‘float‘ object is not subscriptable错误解决
2022/12/24 Python