Javascript 域感知反应路由器

Javascript 域感知反应路由器,javascript,reactjs,react-router,hostname,Javascript,Reactjs,React Router,Hostname,我有一个应用程序,它使用React路由器,并根据以下路径提供内容。在本例中,Sally和Sunny在下面的URL中有自己的页面 www.myapp.com/sally www.myapp.com/sunny 现在我想做的是,当请求来自另一个主机时,匹配其中的每一个,如下所示 sally.herapp.com这不能用React路由器完成。React路由器使用历史API推送新的url状态,而不触发页面刷新。它通过调用来实现这一点,如果传递的是不同的源(子域),则会抛出一个错误。从pushSta

我有一个应用程序,它使用React路由器,并根据以下路径提供内容。在本例中,Sally和Sunny在下面的URL中有自己的页面

  • www.myapp.com/sally
  • www.myapp.com/sunny
现在我想做的是,当请求来自另一个主机时,匹配其中的每一个,如下所示


  • sally.herapp.com这不能用React路由器完成。React路由器使用历史API推送新的url状态,而不触发页面刷新。它通过调用来实现这一点,如果传递的是不同的源(子域),则会抛出一个错误。从
    pushState
    docs

    新URL必须与当前URL的来源相同;否则,pushState()将引发异常

    出于安全目的,浏览器将子域视为单独的源,并对其进行单独的限制,因为它们通常指向不同的计算机

    最好使用一些服务器端代码(例如nginx配置)将请求从
    sally.herapp.com
    反向代理到
    myapp.com/sally
    。这将服务于sally.herapp.com上的页面,但仍然需要往返服务器


    您还可以为每个子域提供一个单独的JS包,其中包含自己的react router实例,因为react router无法在没有往返服务器的情况下跨子域链接,因此您已经失去了使用react router无法实现的单页应用程序的好处。React路由器只是一个javascript框架。它无法创建子域。您可以使用DNS A记录创建子域,并将它们重定向到相关页面感谢@CharlieMartin澄清一下,我不想创建子域。我建立了CNAME记录。我希望我的应用程序是“子域感知”。当从www.myapp.com/sally访问时,它将与路线匹配/sally当从sally.herapp.com访问时,它也将与路线匹配/sallyOkay我更新了问题以进一步澄清,而且格式已关闭,现在看起来更好=)嗯,我不确定我是否理解这里,让我澄清一下。。。。有不同的请求从不同的域发送到同一个正在运行的应用程序,我希望路由匹配是动态的,这取决于请求的来源。目前,以下内容提供了相同的内容,-myapp.com/sally-sally.myapp.com/sally,而我希望匹配并提供在
    myapp.com/sally
    sally.myapp.com
    可见的相同内容。你认为不可能检查原点并相应地切换?我明白了。您可以编写一个自定义的
    路由
    组件,该组件基于域进行匹配。因此,路径为
    /
    的路由检查域,并在域为
    sally.myapp.com
    时为组件提供
    /sally
    。但您还需要动态更改
    基本路径
    或编写自定义
    链接
    组件,以便链接正确(
    /sally/xxx/yyy
    vs
    /xxx/yyy