需求: 访问指定外网路径的数据,但该路径首次访问会报告500错误,刷新就可以,通过察看http头发现首次访问激活session,然后第二次访问方才正常。
使用xmlhttp 可以解决此需求,先用xmlhttp 访问一次,在回调再使用 location.replace(url) 。于是不可避免的遭遇"权限禁止"错误。
为了实现 xmlhttp 跨域访问(当然是在不修改默认权限设置的要求下),我尝试了不少方法:
1. 有人说apache 的 mod_rewrite 可以解决问题,我没有使用apache,于是在tomcat中使用 UrlRewriteFilter(http:///urlrewrite/)。当跨域访问的时候,确实是不再报告权限错误,然后仍然会报告无法访问。ie 和 firefox 都是如此。mod_rewrite 和 UrlRewriteFilter 我想机制应该是一样的,后来仔细看了该文:http://www./users/premshree/2005/04/20/ ,发现mod_rewrite 大概支持自动代理,所以也许可以解决问题。但不能强求都用apache吧?
2. xmlhttp 不行,我于是使用传统的iframe的方法,即动态创建一个iframe,然后设置onload事件来callback。firefox 一切正常,然而ie却有问题,透过研究http 头,发现iframe 访问后成功激活session, 父窗口再访问时firefox正确传递了cookie,而ie却没有。
dlee说过,设置一个代理可以解决跨域的问题,愿闻其详。
|