最近工作需要用到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>
这种方式看起来大费周折,但是如果跨域情况多的话,可以采用。很不错的 。
第一篇技术性文章,如有不妥之处,希望大虾们能慷慨指出 。
分享到:
相关推荐
利用JQuery jsonp实现Ajax跨域请求 .Net 的*.handler 和 WebService,返回json数据
基于ajax方式的跨域请求jsonp的前后台代码
ajax跨域请求,jsp页面+后台实例。
基于jQuery的jsonp ajax跨域请求,
一个ajax跨域请求的demo实例,前端采用jquery的ajax,后端采用tomcat集成的HttpServlet的方法接受前端的数据和返回数据
ajax跨域请求WebService.asmx,程序非常完美的跑起来了。辛苦了一下午整理出来的。怕的就是以后自己忘记了。
flash跨域访问策略。渗透测试时检查crossdomain.xml配置信息,应当重点检查allow-access-from=*、allow-...特别注意参数为*和all,当站内没有crossdomain.xml时将不允许flash跨域访问。不会导致漏洞
使用juery提交表单,实现ajax跨域请求
NULL 博文链接:https://x125858805.iteye.com/blog/2215862
Jquery跨域访问Web服务的demo源码
ajax跨域请求调用webservice接口+视频教程,上次的不带视频教程,这次带一个视频教程,一个流程下来,想学不会都很难!
html通过 ajax jsonp跨域请求接收和传送数据 使用HTML页面与后台跨域交互,获得后台数据或传输数据给后台
通过jquery的ajax处理跨域请求的DEMO,代码比较简单,仅供学习参考。
怎样实现Ajax 跨域访问的五种方法, 怎样实现Ajax 跨域访问的五种方法
flash跨域crossdomain 设置项使用,直接可用允许全部跨域请求
该资源为ASP.NET网站开发技术中使用Ajax进行跨域请求时利用JSONP方案解决浏览器同源策略限制的源码,比较简单,仅供参考
AJAX(XMLHttpRequest)进行跨域请求方法详解
NULL 博文链接:https://sagewsg.iteye.com/blog/1670992
本资源主要介绍了AJAX跨域的解决办法,以及解决方案间的比较
ajax请求报parsererror错误是很宽泛的概念,很多情况下都报这个错, 在很多时候,即使ajax提交、返回都正常 XMLHttpRequest.status=200 (正常响应) XMLHttpRequest.readyState=4 (正常接收) ajax也会提示一个parse...