同步跨域页面地址

时间:2016-12-13 01:46:33

标签: javascript .htaccess cross-browser cross-domain postmessage

我有两个链接:

http://something.something.com/ (an local institute server...)
http://xxx.xxx.xxx.xxx/ (an amazon cloud C2)

我希望我的用户和几乎每个人都可以访问http://something.something.com/,但是这个链接不是我想要的配置,我只有FTP访问它,我希望它默默地将访问者重定向到{{ 1}}。

我已经使用iframe进行了研究和测试,但我没有翻译链接,例如,我没有例如http://xxx.xxx.xxx.xxx/默默地翻译为http://something.something.com/something/ ,在iframe上,它在本地服务器中搜索http://xxx.xxx.xxx.xxx/something/,并且它不存在。导航iframe没有反映在本地主机地址

到目前为止我所阅读的内容会产生一些想法,例如使用somethingpostMessage,但我对这个问题的最佳(甚至是有效)解决方案感到困惑因为我甚至不确定我会在google上搜索什么,并且真的会感谢指导。

update.1:

我对FTP的访问权限有限,它是一个共享域名,所以我有一个.htaccess目录,我无法访问服务器ROOT目录或系统和服务配置。

2 个答案:

答案 0 :(得分:0)

在本地网络上,您可以通过在每台本地PC上将ip注册到/etc/hosts来创建别名。

xxx.xxx.xxx.xxx   someting.something.com

答案 1 :(得分:0)

这很棘手,但我已经解决了。为了使事情恶化,我的local地址不允许使用.htaccess代理规则,因此我依赖iframepostMessage以及.htaccess

在缺乏代理方式后,我已经配置了.htaccess,因此任何链接都会生成相同的地址,即我的index.html文件:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/index.html$
RewriteRule .* /index.html [L]

在用户访问的local server上,我这样做了:

    <iframe id="subD" width="100%" height="100%" src="http://x.x.x.x">
        Sorry your browser did not support iframes.
    </iframe>

    <script>
        // load url on iframe  
        var sub = window.location.pathname;
        document.getElementById("subD").
            contentWindow.document.
            location.href="http://x.x.x.x" + window.location.pathname;

        //get url from amazon server
        window.addEventListener("message", updateUrl, false);
        function updateUrl (event) {
            var origin = event.origin || event.originalEvent.origin;
            if (origin !== "http://x.x.x.x")
                return;
            current = window.location.pathname

            //take care of maintaining a back history whille navigating
            window.history.pushState({"link":current},"",event.data);
        }

        // on back/next event load history on frame
        window.onpopstate = function(e){
            if(e.state == e.state.link){
                var rand = Math.floor((Math.random()*1000000)+1);
                var iframe = document.getElementById('subD');
                iframe.src = "http://x.x.x.x" + e.state.link + "?uid=" + rand;
            } else {
                history.back();
            }
        };
    </script>

amazon server我发送消息以更新local server

  <script>
      parent.postMessage(window.location.pathname,"http://something.something")
  </script>