Ajaxadr ajax跨域请求crossdomain
最近工作需要用到ajax跨域请求参数,网上找很很久,最终得到解决之道。分享一下吧,希望能帮到各位![]()
也许你已经发现在浏览器直接敲路径能获得对方提供接口的参数,而一到项目中Ajax请求却老是失败。原因是,浏览器出于安全考虑,是不允许JavaScript代码进行跨域操作。
话不多说,直入正题:
据我所知,解决ajax跨域请求问题有3种,
1).直接用一个java类向跨域项目请求参数,然后Ajax只想自己项目的对应java类发送请求。
你想到了吗 ? 呵呵
这个够简单了,而且可以实现,但是这样做的我们自己也会觉得这样的方式怪“怂”的。
相面看第二中方法
2).
这中方式主要是通过JS和Java类的一个配合,条件是提供接口方必须与请求方关系紧密,要不人家可愿意为了你的需求来改动接口类
JS方面:
- $.getJSON("http://www.forwhat.com?jsoncallback=?",
- function(data){
- alert(data);
- });
Java Code:
- String jsoncallback=request.getParameter("jsoncallback");
- //与请求中jsoncallback对应
- ...
- out.print(jsoncallback+"("+
- "Message"
- +")");
正种方式的关键在于如下:
1、请求地址加参数:jsoncallback=?
2、服务器段把jsoncallback的值作为方法名传回来,如JQUET098788(...)
3).
第三种方式
AJAXCDR:利用 Flash 完美解决 JavaScript 和 AJAX 跨域 HTTP POST/GET表单请求
这种方式比较强大,即不用懂java类也不需要对象的配合。
这种方式浏览器兼容性好,支持IE、Firefox、谷歌Chrome等多种浏览器。
条件是需要其他域的根目录下有一个crossdomain.xml文件,文件中设置允许所有域名或允许本域访问即可。
crossdomain.xml 文件为:http://api.bz/crossdomain.xml,不需要改动。
AJAXCDR下载地址: http://blog.s135.com/demo/ajaxcdr/ajaxcdr-1.0.zip
AJAXCDR 拥有两个文件:ajaxcdr.js 和 ajaxcdr.swf,下载后需要在ajaxcdr.js中配置ajaxcdr.swf的路径,不详说了,相信这个难不倒你。
AJAXCDR 拥有一个 JavaScript 函数 AjaxCrossDomainRequest() 和一个全局变量 AjaxCrossDomainResponse。
下面是我的例子
- <form name="cross_domain_demo">
- <input name="title" type="text" value="">
- </form>
- <a href="javascript:AjaxCrossDomainRequest('"http://www.forwhat.com', 'POST', 'cross_domain_demo', 'callbacktome()');">Submit</a>
- <script type="text/javascript">
- function callbacktome(){
- alert(AjaxCrossDomainResponse);
- }
- </script>
- <script type="text/javascript" src="/demo/ajaxcdr/ajaxcdr.js"></script>
这种方式看起来大费周折,但是如果跨域情况多的话,可以采用。很不错的 。
第一篇技术性文章,如有不妥之处,希望大虾们能慷慨指出 。
Ajaxadr ajax跨域请求crossdomain的更多相关文章
- Laravel中的ajax跨域请求
最近接触Laravel框架ajax跨域请求的过程中遇到一些问题,在这里做下总结. 一开始发起ajax请求一直报500错误,搜索相关资料后发现Laravel要允许跨域请求可以加入Cors中间件,代码如下 ...
- Ajax跨域请求附带Cookie/Ajax跨域请求附带身份凭证
一.跨域请求中默认不带cookie等验证凭证 尤其对于post请求. 对于ajax请求,其中post,get都可以正常访问. withCredentials: false, // 允许携带cookie ...
- 浅谈linux 下,利用Nginx服务器代理实现ajax跨域请求。
ajax跨域请求对于前端开发者几乎在任何一个项目中都会用到,众所周知,跨域请求有三种方式: jsonp; XHR2 代理: jsonp: 这种应该是开发中是使用的最多的,最常见的跨域请求方法,其实aj ...
- 解决ajax跨域请求 (总结)
ajax跨域请求,目前已用几种方法实现: 1)用原生js的xhr对象实现. var url="http://freegeoip.net/json/" ...
- ASP.NET MVC 实现AJAX跨域请求方法《1》
ASP.NET MVC 实现AJAX跨域请求的两种方法 通常发送AJAX请求都是在本域内完成的,也就是向本域内的某个URL发送请求,完成部分页面的刷新.但有的时候需要向其它域发送AJAX请求,完成数据 ...
- $.ajax 跨域请求 Web Api
WepApi确实方便好用,没有配置文件,一个apicontroller直接可以干活了.但今天用$.ajax跨域请求的时候总是获取不到数据,用fiddler一看确实抓到了数据,但回到$.ajax函数中, ...
- JQuery的Ajax跨域请求原理概述及实例
今天在项目中需要做远程数据加载并渲染页面,直到开发阶段才意识到ajax跨域请求的问题,隐约记得Jquery有提过一个ajax跨域请求的解决方式,于是即刻翻出Jquery的API出来研究,发 JQuer ...
- Nginx 实现AJAX跨域请求
在工作中遇到跨域请求的问题: AJAX从一个域请求另一个域会有跨域的问题.那么如何在nginx上实现ajax跨域请求呢?要在nginx上启用跨域请求,需要添加add_header Access-Con ...
- jQuery ajax跨域请求的解决方法
在Ajax应用中,jQuery的Ajax请求是非常容易而且方便的,但是初学者经常会犯一个错误,那就是Ajax请求的url不是本地或者同一个服务器下面的URI,最后导致虽然请求200,但是不会返回任何数 ...
随机推荐
- LiveView 0.8 RC1 could boot evidence files acquired from Win10 64bit
The latest Windows 10 will be more and more popular in the very near future. Now let's take a look i ...
- vs2008 连接 VSS不提示输入密码
之前使用的vs2005,每次登录的时候会有vss帐号输入框,如上图. 后来安装了vs2008,再打开源代码的时候输入框就不见了,下面是解决办法. --------------------------- ...
- 用Java实现一个堆排序
堆可以看成是一个完全二叉树,而且非终端节点的值均不大于(不小于)其左右孩子节点的值.堆排序只需要一个记录大小的辅助空间,输出堆顶的值之后需要对堆进行调整建立新堆,找到剩下节点的最大值(最小值),反复执 ...
- js事件 event.target
我们购物车里,会时不时增加和删除产品时,就会绑定事件和解绑的动作. <ul> <li></li> <li></li> </ul> ...
- jQuery实现的Div窗口震动效果实例
本文实例讲述了jQuery实现的Div窗口震动效果.分享给大家供大家参考.具体如下: 这是一款jQuery窗口震动效果代码,在Div边框内点击一下鼠标,它就开始震动了,适用浏览器:IE8.360.Fi ...
- POJ C++程序设计 编程题#3 编程作业—多态与虚函数
编程题 #3 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 下面的程序输出 ...
- ASP测试代码: <% response.write("helloworld,vbscript!") %>
ASP测试代码: <% response.write("helloworld,vbscript!") %>
- Web前端性能优化的9大问题
1.请减少HTTP请求基本原理:在浏览器(客户端)和服务器发生通信时,就已经消耗了大量的时间,尤其是在网络情况比较糟糕的时候,这个问题尤其的突出.一个正常HTTP请求的流程简述:如在浏览器中输入&qu ...
- 在Array原型链上扩展remove,contain等方法所遇到的坑
相信jser兄弟们肯定会碰到这样一个问题, 在做数组类的操作的时候,会要求删除数组中的一个元素:亦或是判断某值是否存在于这个数组: OK,拿删除数组元素举例,扩展方法为: Array.prototyp ...
- 3种方式实现Java多线程
java中实现多线程的方法有两种:继承Thread类和实现runnable接口. 1.继承Thread类,重写父类run()方法 public class thread1 extends Thread ...