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 相关文章推荐
初学prototype,发个JS接受URL参数的代码
Sep 25 Javascript
javascript 带有滚动条的表格,标题固定,带排序功能.
Nov 13 Javascript
基于jquery的分页控件(C#)
Jan 06 Javascript
20款效果非常棒的 jQuery 插件小结分享
Nov 18 Javascript
javascript根据时间生成m位随机数最大13位
Oct 30 Javascript
jQuery给多个不同元素添加class样式的方法
Mar 26 Javascript
js匿名函数作为函数参数详解
Jun 01 Javascript
浅析Vue自定义组件的v-model
Nov 26 Javascript
webpack构建换肤功能的思路详解
Nov 27 Javascript
Angular设置别名alias的方法
Nov 08 Javascript
mpvue全局引入sass文件的方法步骤
Mar 06 Javascript
js中console在一行内打印字符串和对象的方法
Sep 10 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循环语句 for()与foreach()用法区别介绍
2012/09/05 PHP
PHP Global定义全局变量使用说明
2013/08/15 PHP
ThinkPHP跳转页success及error模板实例教程
2014/07/17 PHP
PHP网站自动化配置的实现方法(必看)
2017/05/27 PHP
ExtJs扩展之GroupPropertyGrid代码
2010/03/05 Javascript
js中document.getElementByid、document.all和document.layers区分介绍
2011/12/08 Javascript
Jquery 选中表格一列并对表格排序实现原理
2012/12/15 Javascript
JavaScript给按钮绑定点击事件(onclick)的方法
2015/04/07 Javascript
浅谈JavaScript字符串与数组
2015/06/03 Javascript
Javascript获取统一管理的提示语(message)
2016/02/03 Javascript
JQ中$(window).load和$(document).ready区别与执行顺序
2017/03/01 Javascript
JS SetInterval 代码实现页面轮询
2017/08/11 Javascript
vue2中,根据list的id进入对应的详情页并修改title方法
2018/08/24 Javascript
Vue 指令实现按钮级别权限管理功能
2019/04/23 Javascript
通过循环优化 JavaScript 程序
2019/06/24 Javascript
taro小程序添加骨架屏的实现代码
2019/11/15 Javascript
axios如何取消重复无用的请求详解
2019/12/15 Javascript
原生js实现简单轮播图
2020/10/26 Javascript
使用Python中的greenlet包实现并发编程的入门教程
2015/04/16 Python
python re模块findall()函数实例解析
2018/01/19 Python
Python3使用腾讯云文字识别(腾讯OCR)提取图片中的文字内容实例详解
2020/02/18 Python
使用keras实现densenet和Xception的模型融合
2020/05/23 Python
python 读取.nii格式图像实例
2020/07/01 Python
简单了解Python字典copy与赋值的区别
2020/09/16 Python
美国领先的个性化礼品商城:Personalization Mall
2019/07/27 全球购物
四年大学生活的个人自我评价
2013/12/11 职场文书
优秀实习生感言
2014/03/01 职场文书
幼儿园户外活动总结
2014/07/04 职场文书
大学生第一学年自我鉴定2015
2014/09/28 职场文书
2015仓库保管员年终工作总结
2015/05/13 职场文书
安娜卡列尼娜观后感
2015/06/11 职场文书
《多彩的民间艺术》教学反思
2016/02/16 职场文书
创业计划书之养殖业
2019/10/11 职场文书
关于HTML编码导致的乱码问题
2021/09/04 HTML / CSS
你真的会用Mysql的explain吗
2022/03/31 MySQL
js作用域及作用域链工作引擎
2022/07/07 Javascript