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里面的数据

 

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

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

[JS] SpringMVC环境下配置ArcGIS JS跨域访问(代理服务)

问题 使用arcgis js跨越访问 将代理文件复制到工程目录 为proxyjsp配置url路径 测试 代码调用 结果 注意说明:不是SpringMVC环境的朋友只要url能访问到proxy.jsp问...

Servlet作为代理实现跨域访问

就是在前台中调用proxy程序的servlet,设置参数servletName和其它参数。代理程序会将该请求发送到目的地址的名称为servletName的servlet中去,并将其它参数作为请求的参数...

跨域访问方法-Nginx反向代理

跨域访问方法-Nginx反向代理

windows下nginx 配置代理 解决浏览器跨域访问

1、首先我们要了解什么是跨域访问 什么是跨域? 跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制。 所谓同源是指,域名,...
  • ruihaol
  • ruihaol
  • 2017年11月21日 10:33
  • 59

ajax 代理 中转 http请求,处理 跨域访问 问题

通过 jsp 上 书写 java 代码 执行 http 请求 中转 来处理跨域问题 ajax.jsp  java相关代码 ...
  • lizhne
  • lizhne
  • 2015年03月21日 00:58
  • 1130

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

跨域访问简单来说就是A网站的JavaScript代码试图访问B网站,包括提交内容和获取内容.由于安全原因,跨域访问是被各大浏览器所默认禁止的.在广域网环境中,由于浏览器的安全限制,网络连接的跨域访问时...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:apache代理 访问跨域代码
举报原因:
原因补充:

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