最近工作需要用到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. leetcode 112

    112. Path Sum Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that ...

  2. 网络流量监控shell脚本

    网络收发包计数记录在 /proc/net/dev 文件中, 要取得流量, 只需要读取里面的内容两次, 然后相减, 再除以时间间隔即可. #!/bin/bash #Usage1,record in fi ...

  3. Android中SearchView修改字体颜色

    首先获取searchView控件,比如在actionbar上获取: SearchView searchView = (SearchView) menu.findItem(R.id.action_sea ...

  4. pthread_cond_wait避免线程空转

    多线程对同一块区域进行操作时,需要定义如下两种类型的变量: pthread_mutex_t xxx; pthread_cond_t yyy; pthread_mutex_t类型的变量,即锁,对公共区域 ...

  5. CentOS学习笔记--目录配置

      Linux目录配置 类Linux的目录看上去差不多,为什么? 以下内容节选自l 鸟哥的 Linux 私房菜 -- 基础学习篇目录  第六章.Linux 的文件权限与目录配置 3. Linux目录配 ...

  6. Linux字符设备和块设备的区别

    系统中能够随机(不需要按顺序)访问固定大小数据片(chunks)的设备被称作块设备,这些数据片就称作块.最常见的块设备是硬盘,除此以外,还有软盘驱动器.CD-ROM驱动器和闪存等等许多其他块设备.注意 ...

  7. SVN命令收集

    1.检出 svn co  http://路径(目录或文件的全路径) [本地目录全路径] --username 用户名 --password 密码 svn  co  svn://路径(目录或文件的全路径 ...

  8. dedecms 调用channel子栏目的id问题

    dedecms 说明文档:http://www.dedecms.com/archives/templethelp/help/taghelp.htm {dede:channel type='son' t ...

  9. DataGridView 控件用法(可能不是很全面,因为这是自己常常用到的一些小总结):

    一.DataGridView属性设置 1.我们单击选中行的时候,默认是选择一个单元格,不能选择一整行,我们只需设置DataGridView的属性SelectionMode为FullRowSelect ...

  10. 【FitNess】测试框架试用

    参考网友的博客http://blog.csdn.net/funi16/article/details/8985280 1.官网下载jar包fitnesse-standalone.jar后安装. 2.进 ...