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 相关文章推荐
js购物车实现思路及代码(个人感觉不错)
Dec 23 Javascript
对比分析json及XML
Nov 28 Javascript
纯js和css完成贪吃蛇小游戏demo
Sep 01 Javascript
webuploader模态框ueditor显示问题解决方法
Dec 27 Javascript
js实现简单的网页换肤效果
Jan 18 Javascript
JavaScript制作简易计算器(不用eval)
Feb 05 Javascript
vue.js事件处理器是什么
Mar 20 Javascript
实现两个文本框同时输入的实例
Sep 25 Javascript
Javascript实现时间倒计时功能
Nov 17 Javascript
JavaScript中的回调函数实例讲解
Jan 27 Javascript
Vue+Element实现网页版个人简历系统(推荐)
Dec 31 Javascript
通过vue.extend实现消息提示弹框的方法记录
Jan 07 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
Smarty foreach控制循环次数的实现详解
2013/07/03 PHP
Zend Framework教程之Bootstrap类用法概述
2016/03/14 PHP
Yii遍历行下每列数据的方法
2016/10/17 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
PHP-FPM和Nginx的通信机制详解
2019/02/01 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
2020/04/02 PHP
PHP预定义接口――Iterator用法示例
2020/06/05 PHP
XML的代替者----JSON
2007/07/21 Javascript
jQuery中使用Ajax获取JSON格式数据示例代码
2013/11/26 Javascript
AngularJS 使用$sce控制代码安全检查
2016/01/05 Javascript
AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
2016/01/25 Javascript
JS得到当前时间的方法示例
2017/03/24 Javascript
jquery submit()不能提交表单的解决方法
2017/04/24 jQuery
简单实现jquery隔行变色
2017/11/09 jQuery
PHP自动加载autoload和命名空间的应用小结
2017/12/01 Javascript
vue返回上一页面时回到原先滚动的位置的方法
2018/12/20 Javascript
js使用cookie实现记住用户名功能示例
2019/06/13 Javascript
微信小程序动态显示项目倒计时
2019/06/20 Javascript
vue的滚动条插件实现代码
2019/09/07 Javascript
[00:26]TI7不朽珍藏III——冥界亚龙不朽展示
2017/07/15 DOTA
Python语言的12个基础知识点小结
2014/07/10 Python
Python 爬虫图片简单实现
2017/06/01 Python
python 获取指定文件夹下所有文件名称并写入列表的实例
2018/04/23 Python
深入浅析python 中的匿名函数
2018/05/21 Python
pandas将numpy数组写入到csv的实例
2018/07/04 Python
Selenium定时刷新网页的实现代码
2018/10/31 Python
python实现替换word中的关键文字(使用通配符)
2020/02/13 Python
卸载tensorflow-cpu重装tensorflow-gpu操作
2020/06/23 Python
python 常见的排序算法实现汇总
2020/08/21 Python
加拿大著名时装品牌:SOIA & KYO
2016/08/23 全球购物
金融专业毕业生推荐信
2013/11/26 职场文书
党员干部观看《周恩来四个昼夜》思想汇报
2014/09/10 职场文书
党的群众路线教育实践活动个人整改方案
2014/09/21 职场文书
英语教师求职信范文
2015/03/20 职场文书
2015年业务工作总结范文
2015/04/10 职场文书
速龙x4-860k处理器相当于i几
2022/04/20 数码科技