Webpack-dev-server的代理绕过不适用于Angular2路由

时间:2017-01-16 18:29:24

标签: angular proxy webpack webpack-dev-server

我正在为Angular2应用程序实现登录。单击“登录”按钮时,将发出对“/ doLogin”的HTTP请求。 Webpack-dev服务器配置为将该URL段(以及其他几个)代理到后端服务器:

  proxy: [{
    context: ['/doLogin', ...],
    target: 'http://mybackendserver.com',
    secure: false
  }]

成功验证后,后端服务器会将响应重定向到“/ dashboard”。 (注意我们使用的是PathLocationStrategy,没有哈希。)但在某些情况下,基于命令行参数,我想绕过auth并在单击Login按钮时直接转到Dashboard。

根据Webpack-dev-server文档:“可以根据函数的返回选择性地绕过代理。该函数可以检查HTTP请求,响应和任何给定的代理选项。它必须返回false或者将被提供的URL路径,而不是继续代理请求。“所以我为登录添加了这样一个旁路选项:

  proxy: [{
    context: ['/doLogin', ...],
    target: 'http://mybackendserver.com',
    secure: false,
    bypass: function(req, res, proxyOptions) {
      if (req.url == '/doLogin' && SKIP_LOGIN) {
        return '/dashboard';
      }
    }
  }]

但是,从不加载仪表板。该页面将重新加载默认回退路由(再次是登录页面)。我尝试调试Angular路由代码,我很确定'/ dashboard'永远不会出现在那里。

我是否遗漏了某些内容或代理实施中是否存在错误?

我们目前正在使用webpack v.2.1.0-beta.22,webpack-dev-server v.2.1.0-beta.2和webpack-dev-middleware v.1.6.1,尽管我尝试了各种各样的更新版本的组合,包括webpack-dev-server 2.2.0-rc.0,但它们在代理绕过方面的行为方式相同。

0 个答案:

没有答案