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的初始化与对象构建之浅析
Apr 12 Javascript
jquery限制输入字数,并提示剩余字数实现代码
Dec 24 Javascript
ExtJS中文乱码之GBK格式编码解决方案及代码
Jan 20 Javascript
解析JavaScript中delete操作符不能删除的对象
Dec 03 Javascript
Javascript浮点数乘积运算出现多位小数的解决方法
Feb 17 Javascript
javascript获取浏览器类型和版本的方法(js获取浏览器版本)
Mar 13 Javascript
浅谈JS函数定义方式的区别
Oct 30 Javascript
Vue2.0中集成UEditor富文本编辑器的方法
Mar 03 Javascript
Angular2中监听数据更新的方法
Aug 31 Javascript
javascript 构建模块化开发过程解析
Sep 11 Javascript
微信小程序可滑动月日历组件使用详解
Oct 21 Javascript
vue实现顶部菜单栏
Nov 08 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
几个实用的PHP内置函数使用指南
2014/11/27 PHP
注释PHP和html混合代码的小技巧(分享)
2016/11/03 PHP
PHP CURL与java http使用方法详解
2018/01/26 PHP
php分享朋友圈的实现代码
2019/02/18 PHP
PJ Blog修改-禁止复制的代码和方法
2006/10/25 Javascript
JavaScript Undefined,Null类型和NaN值区别
2008/10/22 Javascript
JQuery 选择器 xpath 语法应用
2010/05/13 Javascript
js操作textarea 常用方法总结
2012/12/03 Javascript
JQuery页面的表格数据的增加与分页的实现
2013/12/10 Javascript
jQuery 获取、设置HTML或TEXT内容的两种方法
2014/05/23 Javascript
javascript中拼接HTML字符串的最快、最好的方法
2014/06/07 Javascript
JavaScript匿名函数用法分析
2015/02/13 Javascript
js简单的点击返回顶部效果实现方法
2015/04/10 Javascript
Javascript实现颜色rgb与16进制转换的方法
2015/04/18 Javascript
CKEditor无法验证的解决方案(js验证+jQuery Validate验证)
2016/05/09 Javascript
vue分页组件table-pagebar使用实例解析
2020/11/15 Javascript
Bootstrap3 内联单选和多选框
2016/12/29 Javascript
JavaScript中闭包的详解
2017/04/01 Javascript
自定义事件解决重复请求BUG的问题
2017/07/11 Javascript
js实现移动端导航点击自动滑动效果
2017/07/18 Javascript
浅谈layui里的上传控件问题
2019/09/26 Javascript
createObjectURL方法实现本地图片预览
2019/09/30 Javascript
[52:29]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第三局
2016/03/03 DOTA
Python多层装饰器用法实例分析
2018/02/09 Python
python时间日期函数与利用pandas进行时间序列处理详解
2018/03/13 Python
Pandas之Dropna滤除缺失数据的实现方法
2019/06/25 Python
django框架forms组件用法实例详解
2019/12/10 Python
数控技术应届生求职信
2013/11/13 职场文书
质检部部长职责
2013/12/16 职场文书
岗位竞聘演讲稿
2014/01/10 职场文书
《雾凇》教学反思
2014/02/17 职场文书
小学语文国培感言
2014/03/04 职场文书
2014年党支部学习材料
2014/05/19 职场文书
2014年创卫工作总结
2014/11/24 职场文书
入团申请书格式
2019/06/20 职场文书
win10系统计算机图标怎么调出来?win10调出计算机图标的方法
2022/08/14 数码科技