GM Userscript使用HTML5 replaceState()更改域名

时间:2012-06-18 14:55:54

标签: html5 greasemonkey same-origin-policy pushstate

我正在为一个有两个域的网站编写Greasemonkey用户脚本。我们说http://friendlyurl.comhttp://ugly.url.comhttp://friendlyurl.com/*重定向到http://ugly.url.com/*。 我想要包含在用户脚本中的一个功能是使用HTML5 replaceState()将丑陋的URL重写为友好的URL。

我的代码是:

(function() {
    if (history.replaceState) {
        var url = document.location.href.replace('ugly.url.com/', 'friendlyurl.com/');
        history.replaceState({}, document.title, url);
    }
})();

直到我意识到这违反了同源政策。我的问题是:是否有一种解决方法来切换网站的域名,可能使用GM_ * API?显然,因为这是一个用户脚本,所以安全问题的规模要小得多。 我目前的猜测是,这是不可能的,但我想我会把问题放在那里。

1 个答案:

答案 0 :(得分:2)

出于安全原因,

history.replaceState无法用于更改域名。甚至不是通过GM API。

详细了解the HTML Standard for replaceState()中的规则。