最近工作需要用到ajax跨域请求参数,网上找很很久,最终得到解决之道。分享一下吧,希望能帮到各位

也许你已经发现在浏览器直接敲路径能获得对方提供接口的参数,而一到项目中Ajax请求却老是失败。原因是,浏览器出于安全考虑,是不允许JavaScript代码进行跨域操作。 
话不多说,直入正题: 
据我所知,解决ajax跨域请求问题有3种,

1).直接用一个java类向跨域项目请求参数,然后Ajax只想自己项目的对应java类发送请求。 
你想到了吗 ? 呵呵 
这个够简单了,而且可以实现,但是这样做的我们自己也会觉得这样的方式怪“怂”的。 
相面看第二中方法

2). 
这中方式主要是通过JS和Java类的一个配合,条件是提供接口方必须与请求方关系紧密,要不人家可愿意为了你的需求来改动接口类 
JS方面:

  1. $.getJSON("http://www.forwhat.com?jsoncallback=?",
  2. function(data){
  3. alert(data);
  4. });

Java Code:

  1. String jsoncallback=request.getParameter("jsoncallback");
  2. //与请求中jsoncallback对应
  3. ...
  4. out.print(jsoncallback+"("+
  5. "Message"
  6. +")");

正种方式的关键在于如下: 
      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。 
下面是我的例子

  1. <form name="cross_domain_demo">
  2. <input name="title" type="text" value="">
  3. </form>
  4. <a href="javascript:AjaxCrossDomainRequest('"http://www.forwhat.com', 'POST', 'cross_domain_demo', 'callbacktome()');">Submit</a>
  5. <script type="text/javascript">
  6. function callbacktome(){
  7. alert(AjaxCrossDomainResponse);
  8. }
  9. </script>
  10. <script type="text/javascript" src="/demo/ajaxcdr/ajaxcdr.js"></script>

这种方式看起来大费周折,但是如果跨域情况多的话,可以采用。很不错的 。 
第一篇技术性文章,如有不妥之处,希望大虾们能慷慨指出 。

Ajaxadr ajax跨域请求crossdomain的更多相关文章

  1. Laravel中的ajax跨域请求

    最近接触Laravel框架ajax跨域请求的过程中遇到一些问题,在这里做下总结. 一开始发起ajax请求一直报500错误,搜索相关资料后发现Laravel要允许跨域请求可以加入Cors中间件,代码如下 ...

  2. Ajax跨域请求附带Cookie/Ajax跨域请求附带身份凭证

    一.跨域请求中默认不带cookie等验证凭证 尤其对于post请求. 对于ajax请求,其中post,get都可以正常访问. withCredentials: false, // 允许携带cookie ...

  3. 浅谈linux 下,利用Nginx服务器代理实现ajax跨域请求。

    ajax跨域请求对于前端开发者几乎在任何一个项目中都会用到,众所周知,跨域请求有三种方式: jsonp; XHR2 代理: jsonp: 这种应该是开发中是使用的最多的,最常见的跨域请求方法,其实aj ...

  4. 解决ajax跨域请求 (总结)

    ajax跨域请求,目前已用几种方法实现:   1)用原生js的xhr对象实现.                var url="http://freegeoip.net/json/" ...

  5. ASP.NET MVC 实现AJAX跨域请求方法《1》

    ASP.NET MVC 实现AJAX跨域请求的两种方法 通常发送AJAX请求都是在本域内完成的,也就是向本域内的某个URL发送请求,完成部分页面的刷新.但有的时候需要向其它域发送AJAX请求,完成数据 ...

  6. $.ajax 跨域请求 Web Api

    WepApi确实方便好用,没有配置文件,一个apicontroller直接可以干活了.但今天用$.ajax跨域请求的时候总是获取不到数据,用fiddler一看确实抓到了数据,但回到$.ajax函数中, ...

  7. JQuery的Ajax跨域请求原理概述及实例

    今天在项目中需要做远程数据加载并渲染页面,直到开发阶段才意识到ajax跨域请求的问题,隐约记得Jquery有提过一个ajax跨域请求的解决方式,于是即刻翻出Jquery的API出来研究,发 JQuer ...

  8. Nginx 实现AJAX跨域请求

    在工作中遇到跨域请求的问题: AJAX从一个域请求另一个域会有跨域的问题.那么如何在nginx上实现ajax跨域请求呢?要在nginx上启用跨域请求,需要添加add_header Access-Con ...

  9. jQuery ajax跨域请求的解决方法

    在Ajax应用中,jQuery的Ajax请求是非常容易而且方便的,但是初学者经常会犯一个错误,那就是Ajax请求的url不是本地或者同一个服务器下面的URI,最后导致虽然请求200,但是不会返回任何数 ...

随机推荐

  1. C# 打印异常

    1. [代码]函数:将异常打印到LOG文件     跳至 [1] [2] [4] [全屏预览] ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...

  2. Sql server 数据库 int 和guid 两者的比较

    我们公司的数据库全部是使用GUID做主键的,很多人习惯使用int做主键.所以呢,这里总结一下,将两种数据类型做主键进行一个比较. 使用INT做主键的优点: 1.需要很小的数据存储空间,仅仅需要4 by ...

  3. c# 字符串(含有汉字)转化为16进制编码(转)

    public static string Str2Hex(string s) { string result = string.Empty; byte[] arrByte = System.Text. ...

  4. Heavily reliance on forensic tools is risky

    We could take advantage of forensic tools to examine and analyze the evidence, but heavily reliance ...

  5. 0511 backlog 项目管理

    SCRUM 这次的作业就是确定SCRUM的计划,确定sprint backlog的一个冲刺周期,而这个周期是两个星期.争取在两周内发布1.0版本. 本次作业以网站构建为主: ID       NAME ...

  6. 一、Linux目录结构

    转自:http://www.cnblogs.com/JCSU/articles/2770249.html 你想知道为什么某些程序位于/bin下,或者/sbin,或者/usr/bin,或/usr/sbi ...

  7. hdu2097

    #include <stdio.h> int sum1(int n,int sign){ ; while(n){ sum+=n%sign; n/=sign; } return sum; } ...

  8. Android IOS WebRTC 音视频开发总结(四九)-- ffmpeg介绍

    本文主要介绍ffmpeg,文章来自博客园RTC.Blacker,支持原创,转载必须说明出处,个人微信公众号blacker,更多详见www.rtc.help 说明: ps1:如果直接从webrtc开始学 ...

  9. EasyUI-Combox

    Combox的数据格式和默认选中项设置 [{ "id":1, "text":"text1" },{ "id":2, &q ...

  10. crontab的使用说明

    网上瞎转载的,仅供参考 名称 : crontab 使用权限 : 所有使用者 使用方式 : crontab file [-u user]-用指定的文件替代目前的crontab. crontab-[-u ...