使用rendertron的基本路由始终为空

问题描述 投票:0回答:1

我一直在尝试通过apache代理使用rendertron,但是所有基本路由都是“ null”,是否可能导致一些配置错误?如果您能帮助我,我将不胜感激。

Rendertron在默认情况下在端口3000上运行。而apache主机是这样的:

<VirtualHost *:80>
        ServerName render.vool.xyz
        ProxyRequests Off

  <Proxy *>
     #Require all granted
     Order deny,allow
     Allow from all
  </Proxy>

  <Location />
        ProxyPass http://localhost:3000/
        ProxyPassReverse http://localhost:3000/
        Header set Access-Control-Allow-Origin "http://render.vool.xyz"
  </Location>
</VirtualHost>

Rendertron服务已在render.vool.xyz url中启动并正在运行

再次感谢

angular apache proxy rendertron
1个回答
0
投票

我可以检测到与初始化中的协议相对应的斜杠已从url中删除

this.app.use(
       route.get('/render/:url(.*)', this.handleRenderRequest.bind(this)));

我通过在rendertron类中添加以下方法并从handleRenderRequest方法中调用它来解决此问题

handleFixProtocol(href: string) {
    if (href.startsWith('https://') || href.startsWith('https://') ) {
      return href;
      } else {
        const parsedUrl = url.parse(href);
        if (!parsedUrl.host) {
          return parsedUrl.protocol + '/' + parsedUrl.path;
        } else {
          return parsedUrl.protocol + '//' + parsedUrl.host + parsedUrl.path;
        }
    }
   }
async handleRenderRequest(ctx: Koa.Context, url: string) {
    if (!this.renderer) {
      throw (new Error('No renderer initalized yet.'));
    }

    url = this.handleFixProtocol(url);
© www.soinside.com 2019 - 2024. All rights reserved.