未捕获的DOMException:无法在“历史记录”上执行“pushState”:

时间:2017-09-25 05:45:20

标签: javascript jquery ajax html5-history

我有一个问题,根据用户的不同情况呈现出来。

组A:当看起来似乎是选择用户加载到主页并单击导航锚点时,该锚点应加载AJAX并使用history.pushState('','',destinationUrl);他们没有得到回应。控制台中显示错误消息:

  

未捕获DOMException:无法在“历史记录”上执行“pushState”:A   URL“http://example.net/foo”的历史状态对象不能   在原始“http://www.example.net”和网址的文档中创建   “http://www.example.net/

根据搜索,我认为问题不包括example.net/foo中的www。我将导航锚点更新为“http://www.example.net/foo”。

这解决了A组的问题,但为更大的用户群B组创建了同样的问题,并出现了类似的错误:

  

未捕获DOMException:无法在“历史记录”上执行“pushState”:A   URL“http://www.example.net/foo”的历史状态对象不能   在原始“http://example.net”和网址的文档中创建   'http://example.net/'。

对于B组,网址差异被反转。对于这两个群组,该问题似乎与浏览器无关。该网站使用Craft CMS。

可能发生的任何方向或解决方案,如何为两个群体解决此问题?

1 个答案:

答案 0 :(得分:1)

感谢@Patrick Evans。使用mod_rewrite的建议在这里引导我:https://httpd.apache.org/docs/2.4/rewrite/remapping.html#canonicalhost

我最终使用了" if"指令推荐,但也测试了mod_rewrite,它也有效。

    <If "%{HTTP_HOST} != 'www.example.net'">
      Redirect "/" "http://www.example.net/"
    </If>