1 / 16
文档名称:

ajax跨域解决方案.docx

格式:docx   大小:21KB   页数:16页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

ajax跨域解决方案.docx

上传人:mkjafow 2018/11/10 文件大小:21 KB

下载得到文件列表

ajax跨域解决方案.docx

文档介绍

文档介绍:ajax跨域解决方案
篇一:使用JSONP解决Ajax跨域访问问题
使用JSONP解决Ajax跨域访问问题
JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。现在我们来用JSONP解决Ajax跨域访问问题。
前几天,工作上有一新需求,需要前端web页面异步调用后台的Webservice方法返回信息。实现方法有多种,本例采用 jQuery+Ajax,完成后,在本地调试了一切ok,但是部署到服务器上以后就出现问题了,后台服务调用没有响应,怎么回事?代码没怎么改动,唯一修改的地方就是jQuery的ajax方法中的url地址。难道是这里的问题,经过检查和调试,发现原来是同源策略在作怪,我们知道,JavaScript 或jQuery是在Web前端开发中经常使用的动态脚本技术。在JavaScript中,有一个很重要的安全性限制,被称为“Same- Origin Policy”(同源策略)。这一策略对于JavaScript代码能够访问的页面内容做了很重要的限制,即JavaScript只能访问与包含它的文档或脚本在同一域名下的内容。不同域名下的脚本不能互相访问,即便是子域也不行。关于同源策略,读者可百度更详细的解释,这里不再赘述。
但是有时候又不可避免地需要进行跨域操作,这时候“同源策略”就是一个限制了,怎么办呢?采用JSONP跨域GET请求是一个常用的解决方案,下面我们来看一下JSONP跨域是如何实现的,并探讨下JSONP跨域的原理。
这里提到了JSONP,那有人就问了,它同JSON有什么区别不同和区别呢,接下我们就来看看,百度百科有以下说明:
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(网络传输速度快)。
JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于的网页无法与不是的服务器沟通,而 HTML 的元素是一个例外。利用元素的这个开放策略,网页可以得到从其他来源动态产生的 JSON 资料,而这种使用模式就是所谓的 JSONP。用 JSONP 抓到的资料并不是 JSON,而是任意的JavaScript,用 JavaScript 直译器执行而不是用 JSON 解析器解析。
到这里,应该明白了,JSON是一种轻量级的数据交换格式,像xml一样,是用来描述数据间的。JSONP是一种使用JSON数据的方式,返回的不是JSON对象,是包含JSON对象的javaScript脚本。
那JSONP是如何工作的呢,我们知道,由于同源策略的限制,XmlHttpRequest只允许请求当前源(域名、协议、端口)的资源。若要跨域请求出于安全性考虑是不行的,但是我们发现,Web页面上调用js文件时则不受是否跨域的影响,而且拥有”src”这个属性的标签都拥有跨域的能力,比如、、,这时候,聪明的程序猿就想到了变通的方法,如果要进行跨域请求, 通过使用html的script标记来进行跨域请求,并在响应中返
回要执行的script代码,其中可以直接使用JSON传递 javascript对象。即在跨域的服务端生成JSON数据,然后包装成script脚本回传,着不就突破同源策略的限制,解决了跨域访问的问题了么。
下面我们就看下怎么实现:
前端代码:
代码如下复制代码
function CallWebServiceByJsonp() { $("#SubEquipmentDetails").html('');
$.ajax({
type: "GET",
cache: false,
url: "http://servername/webservice//GetSingleInfo",
data: { strCparent: $("# (("{0}({1})",
jsonCallBackFunName, ret));
();
}
如上所示,前端的CallWebServiceByJsonp方法采用jQuery的ajax方法调用后端的Web服务GetSingleInfo方法,后台的

最近更新

2025年宁夏工商职业技术学院单招职业倾向性考.. 67页

2025年论民族经济法学经济分析方法的必然性 3页

2025年宁夏工业职业学院单招综合素质考试题库.. 63页

2025年宁夏固原地区单招职业倾向性考试题库及.. 64页

2025年讲座通知(通用篇) 9页

2025年宁夏体育职业学院单招职业适应性考试题.. 65页

2025年宁夏体育职业学院单招职业技能考试题库.. 66页

2025年保健品行业综述 9页

2025年供销社房屋租赁合同 4页

2025年记一次参观活动作文650字 3页

2025年作业长值班长安全职责 4页

2025年让真情自然流露优秀作文(通用32篇) 30页

2025年娄底幼儿师范高等专科学校单招职业适应.. 67页

半年工作总结和下半年工作计划推荐8篇 21页

2025年让座小学作文精选篇 9页

2025年威海职业学院单招职业适应性测试题库及.. 64页

2025年让别人心疼的句子 44页

2025年让人醒悟的哲理句子 3页

2025年让人心疼的伤感说说(精选5篇) 7页

变压器工作总结5篇 21页

2025年讨厌的作文500字7篇 6页

2025年企业宽带薪酬设计案例 12页

2025年企业发展规划 12页

2025年太原城市职业技术学院单招职业技能考试.. 66页

2025年太原城市职业技术学院单招职业倾向性测.. 67页

2025年合肥财经职业学院单招职业适应性测试题.. 60页

2025年安徽卫生健康职业学院单招职业适应性测.. 61页

机械设备升级改造合同书 6页

部编版一至六年级语文古诗日积月累 32页

驯养篮球犬 1页