用iframe设置代理解决ajax跨域请求问题

 更新时间:2013年11月18日 15:58:28   作者:  
面对ajax跨域请求的问题,想用代理的方式来解决这个跨域问题。在服务器端创建一个静态的代理页面,在客户端用iframe调用这个代理
今天在项目中需要做远程数据加载并渲染页面,直到开发阶段才意识到ajax跨域请求的问题。于是想用代理的方式来解决这个跨域问题。

什么是跨域?

简单的来说,出于安全方面的考虑,页面中的JavaScript无法访问其他服务器上的数据,即“同源策略”。而跨域就是通过某些手段来绕过同源策略限制,实现不同服务器之间通信的效果。

方案:在服务器端创建一个静态的代理页面,在客户端用iframe调用这个代理,然后通过iframe的document.getElementById("proxy").contentWindow对象来请求ajax。

服务器端的代理页面:
复制代码 代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Ajax跨域</title>
<script src="js/jquery-1.6.4.min.js" type="text/javascript"></script>
<script type="text/javascript">
document.domain = 'xxx.com';
</script>
</head>
<body>
</body>
</html>

客户端ajax的调用代码示例:
复制代码 代码如下:

<iframe src="http://weixin.goumin.com/proxy.html" id="proxy" style="display:none;" onload="loadDefaultData();"></iframe>
<script type="text/javascript">
document.domain = "xxx.com";
function loadDefaultData(){
var iframe_jquery = document.getElementById("proxy").contentWindow.$;
iframe_jquery.ajax({
type: "POST",
url:""+Math.random(),
data:{},
async:false,
dataType:'json',
success:function(data){
alert(data);
}
});
}
</script>

url:""+Math.random(),

请注意加红的url这行,用一个随机函数来解决浏览器缓存的问题。让每一次请求的url不一样。

相关文章

  • Ajax 入门之 GET 与 POST 的不同处详解

    Ajax 入门之 GET 与 POST 的不同处详解

    这篇文章主要介绍了Ajax 入门之 GET 与 POST 的不同处详解,需要的朋友可以参考下
    2017-02-02
  • 使用Yii整合的pjax(pushstate+ajax)实现无刷新加载页面

    使用Yii整合的pjax(pushstate+ajax)实现无刷新加载页面

    本篇文章给大家介绍Yii整合pjax(pushstate+ajax)实现无刷新加载页面,小伙伴跟着小编一起学习吧
    2015-09-09
  • ajax结合豆瓣搜索结果进行分页完整代码

    ajax结合豆瓣搜索结果进行分页完整代码

    这篇文章主要为大家详细介绍了ajax结合豆瓣搜索结果进行分页完整代码,具有一定的参考价值,感兴趣的朋友可以参考一下
    2016-10-10
  • ajax接口文档url路径的简写实例

    ajax接口文档url路径的简写实例

    前端工程师将来打交道最多的是Http API接口,此种接口会提供一个URL地址暴露在互联网上,可以通过编写Ajax代码去与之交互来完成功能,下面这篇文章主要给大家介绍了关于ajax接口文档url路径简写的相关资料,需要的朋友可以参考下
    2021-10-10
  • Ajax验证用户的唯一性

    Ajax验证用户的唯一性

    这篇文章主要介绍了Ajax验证用户的唯一性,验证环境Ajax+Jquery+Json+struts2,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • ajax实现分页和分页查询

    ajax实现分页和分页查询

    本文主要介绍了ajax实现分页和分页查询的相关知识,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-03-03
  • AJAX实现文件上传功能报错Current request is not a multipart request详解

    AJAX实现文件上传功能报错Current request is not a&n

    这篇文章主要介绍了AJAX文件上传功能实现中出现报错Current request is not a multipart request的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Ajax犯的错误处理方法

    Ajax犯的错误处理方法

    ajax 发送请求时状态判断 if else 语句问题如何解决呢?接下来通过本文给大家分享ajax犯的错误处理方法,对ajax错误感兴趣的朋友一起看看吧
    2016-09-09
  • Ajax请求中async:false/true的作用分析

    Ajax请求中async:false/true的作用分析

    这篇文章主要介绍了Ajax请求中async:false/true的作用,结合实例形式分析说明了Ajax请求中async:false/true的具体功能与使用技巧,需要的朋友可以参考下
    2016-04-04
  • jquery中的ajax同步和异步详解

    jquery中的ajax同步和异步详解

    jquery ajax同步的意思是当JS代码加载到当前ajax的时候会把页面里所有的代码停止加载,页面出现了假死状态,当这个ajax执行完毕后才会继续运行其他的代码假死状态解除。而异步的意思是这个ajax代码运行中的时候其他代码一样可以运行。本文给大家详解,感兴趣的朋友参考下
    2015-09-09

最新评论