apache代理 访问跨域代码

原创 2013年12月04日 10:28:50

在工作中遇到了这么一个问题?根据一个url路径来获取用户的状态,实际上是发送了一个servlet请求给服务器,然后server端通过数据流打印到前端。因此使用iframe能够显示前端的状态(图片或者是文字),现在的问题是开发人员想获取到我们写的用户状态,即在iframe中显示的文字,由于之前的URL已经指定了服务器的IP地址,因此在开发人员的应用中是无法访问这个iframe的,因为IP地址不一致,已经跨域了,所以不能访问。

 

我的解决办法 —— 利用apache的代理方式来访问?

1、在本机中安装apache,然后配置代理

ProxyPass /http-plugins/ http://172.16.14.81:9090/plugins/

备注:标示在apache访问/http-bind/类似于访问 http://172.16.14.81:7070/http-bind/目录下的内容

 

2、在apache容器下添加一个页面,里面包含一个iframe标签,将src以相对路径的方式访问,apache实际上是会访问其他IP地址的路径

<iframe id="test_iframe" name="test_iframe" src="/http-plugins/presence/status?jid=abc@jdchat&type=text" ></iframe>

或者

<iframe id="test_iframe" name="test_iframe" src="http://127.0.0.1/http-plugins/presence/status?jid=abc@jdchat&type=text" ></iframe>

备注:这两种方式的效果是一样的,都没有任何问题

 

apache根据url实际上访问的是下面的地址

<iframe id="test_iframe" name="test_iframe" src="http://172.16.14.81:9090/plugins/presence/status?jid=abc@jdchat&type=text"></iframe>

 

3、访问iframe里面的内容

function init() {
//使用Jquery的方式访问
    alert($("pre", document.getElementById('test_iframe').contentWindow.document).attr("innerHTML"));
//使用js原始代码访问
    //alert(window.frames["test_iframe"].document.getElementsByTagName('pre')[0].innerHTML);
    //alert(document.getElementById('test_iframe').contentWindow.document.body.innerHTML);
}

 

备注:我开始测试是将init方法放在jquery中的document.ready方法中运行的,在IE中能够正常显示,但是在chrom中无法访问,经过反复测试,将这个方法抽出来,使用按钮事件来触发,结果显示正确。

<input type="button" value="登录" id="hb" onclick="javascript:init();" style="font-size: 12px;"/>

 

结论:在IE中访问iframe中的内容实用是单线程,数据是从上往下运行,如果IFRAME中的数据没有获取到会阻塞,而chrome实际上上采用多线程的方式加载内容,页面的内容已经全部OK了,但是还是访问不到iframe里面的数据

 

Ubuntu——apache如何解决跨域资源访问

1.sudo cd /etc/apache2/sites-available/ 2.sudo gedit  000-default.conf 编辑添加   LoadModule headers_mo...
  • Emily201314
  • Emily201314
  • 2016年10月20日 21:37
  • 1126

【反向代理】xampp apache配置反向代理

1、开启代理模块 找到 http.conf 文件(路径/xampp/apache/conf/http.conf) 找到以下几句,如果之前有#,则把#去掉,代表打开代理模块 L...
  • snow_finland
  • snow_finland
  • 2015年07月30日 17:43
  • 2525

用htaccess进行访问控制

前面提到了很多有用的访问控制方法,其实通过Rewrite也能实现类似的功能,而且可以更强大。 1. 文件访问控制 利用 httpd.conf 中的 Order、Files 及 FilesM...
  • haozi3156666
  • haozi3156666
  • 2014年07月09日 16:34
  • 671

AJAX跨域访问——XMLHttpRequest代理实现

跨域访问简单来说就是A网站的JavaScript代码试图访问B网站,包括提交内容和获取内容.由于安全原因,跨域访问是被各大浏览器所默认禁止的.在广域网环境中,由于浏览器的安全限制,网络连接的跨域访问时...
  • liutengteng130
  • liutengteng130
  • 2013年09月29日 08:33
  • 5992

vue中的跨域代理

vue
  • A_bet_of_three_years
  • A_bet_of_three_years
  • 2017年11月13日 21:52
  • 424

apache 配置动静分离,允许跨域, 并在反向代理的情况下维持默认主页

apache 配置动静分离, 并在反向代理的情况下维持默认主页
  • kkgbn
  • kkgbn
  • 2016年12月22日 11:58
  • 2336

服务端(apache)解决Javascript跨域问题

由于前端解决跨域问题的局限性比较大,对于 Ajax 跨域或是 iframe 跨域,建议用服务器端解决方案。 此方案的原理是接受客户端发来的请求后,经由本域服务器代理向目标服务器发送请求,并将响应数据...
  • a9529lty
  • a9529lty
  • 2012年02月01日 09:28
  • 6323

Apache搭建代理服务器

版权声明 :可以任意转载,但转载时必须标明原作者charlee、原始链接http://tech.idv2.com/2004/12/04/create-proxy-with-apache/ 以及本声明。...
  • zbuger
  • zbuger
  • 2016年06月12日 18:01
  • 2719

使用Apache的虚拟主机以及代理搞定多个网站的子域名(包括跨域情况)解析问题

假期也快完了,抓住假期的尾巴,做一些自己想做的事情。   之前一直在烦恼一个问题,就是诸如10.10.0.1:8080这样的网址如何采用域名访问,这样的方式显示在地址栏中,内网无所谓,要是到了公网就给...
  • mgsky1
  • mgsky1
  • 2017年08月31日 20:42
  • 463

Apache搭建两级代理器自由访问国外网站

youtube上存在着大量的学习视频,这些都是在土豆上所无法找到的。很多企业的官方培训视频也都放在youtube上。为了学习,我才会翻墙的哦。 对于一个外企员工来说,最大的资源就是国外能有物理资...
  • zbuger
  • zbuger
  • 2016年06月02日 17:37
  • 2861
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:apache代理 访问跨域代码
举报原因:
原因补充:

(最多只允许输入30个字)