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中产生固定结果的函数优化技巧
Jan 16 Javascript
jquery实现可自动判断位置的弹出层效果代码
Oct 12 Javascript
jQuery手动点击实现图片轮播特效
Apr 20 Javascript
基于jquery二维码生成插件qrcode
Jan 07 Javascript
关于javascript作用域的常见面试题分享
Jun 18 Javascript
vue 使某个组件不被 keep-alive 缓存的方法
Sep 21 Javascript
微信小程序性能优化之checkSession的使用
Mar 06 Javascript
详解微信UnionID作用
May 15 Javascript
vue仿淘宝滑动验证码功能(样式模仿)
Dec 10 Javascript
uni-app从安装到卸载的入门教程
May 15 Javascript
JS实现canvas简单小画板功能
Jun 23 Javascript
8个非常实用的Vue自定义指令
Dec 15 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加密解密类代码
2011/11/27 PHP
DEDECMS首页调用图片集里的多张图片
2015/06/05 PHP
PHP中文竖排转换实现方法
2015/10/23 PHP
PHP中检查isset()和!empty()函数的必要性
2019/02/13 PHP
php实现 master-worker 守护多进程模式的实例代码
2019/07/20 PHP
Laravel基础-关于引入公共文件的两种方式
2019/10/18 PHP
angularjs中的e2e测试实例
2014/12/06 Javascript
JS实现CheckBox复选框全选全不选功能
2015/05/06 Javascript
基于jQuery实现动态数字展示效果
2015/08/12 Javascript
JS中Json数据的处理和解析JSON数据的方法详解
2016/06/29 Javascript
运用jQuery写的验证表单(实例讲解)
2017/07/06 jQuery
使用Vue动态生成form表单的实例代码
2018/04/26 Javascript
小程序实现订单倒计时功能
2019/04/23 Javascript
jquery css实现流程进度条
2020/03/26 jQuery
JavaScript如何实现监听键盘输入和鼠标监点击
2020/07/20 Javascript
[01:50]2014DOTA2西雅图邀请赛 专访欢乐周宝龙
2014/07/08 DOTA
python下如何让web元素的生成更简单的分析
2008/07/17 Python
python中使用enumerate函数遍历元素实例
2014/06/16 Python
Python实现决策树C4.5算法的示例
2018/05/30 Python
Python快速查找list中相同部分的方法
2018/06/27 Python
python将txt等文件中的数据读为numpy数组的方法
2018/12/22 Python
详解Python Qt的窗体开发的基本操作
2019/07/14 Python
django多对多表的创建,级联删除及手动创建第三张表
2019/07/25 Python
Python for i in range ()用法详解
2020/09/18 Python
python scatter函数用法实例详解
2020/02/11 Python
python自动点赞功能的实现思路
2020/02/26 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
2020/09/21 Python
python matplotlib工具栏源码探析二之添加、删除内置工具项的案例
2021/02/25 Python
Html5新特性用canvas标签画多条直线附效果截图
2014/06/30 HTML / CSS
static全局变量与普通的全局变量有什么区别
2014/05/27 面试题
Java面试题:请说出如下代码的输出结果
2013/04/22 面试题
专家推荐信模板
2014/05/09 职场文书
学校党的群众路线教育实践活动总结报告
2014/07/03 职场文书
警察群众路线对照检查材料思想汇报
2014/10/01 职场文书
办公室主任岗位职责
2015/01/31 职场文书
《打电话》教学反思
2016/02/22 职场文书