"dot"查询字符串参数 - AngularJS



我试图在查询字符串参数中使用句点(.),但它不起作用。

此URL运行良好:

http://localhost:9000/search-结果?majTFMin=0&majTFMax=100&majDOMCFMin=0&majDOMCFMax=100&majRefDomainsMin=0&majRefDomainsMax=100&majRefIPsMin=0&majRefIPsMax=100&majRefDomainsEDUMin=0&majRefDomainsEDUMax=100&majRefDomainsGOVMin=0&majRefDomainsGOVMax=100&selectedTLD=com

但不是这个,因为它在参数中包含一个点:

http://localhost:9000/search-结果?majTFMin=0&majTFMax=100&majDOMCFMin=0&majDOMCFMax=100&majRefDomainsMin=0&majRefDomainsMax=100&majRefIPsMin=0&majRefIPsMax=100&majRefDomainsEDUMin=0&majRefDomainsEDUMax=100&majRefDomainsGOVMin=0&majRefDomainsGOVMax=100&selectedTLD=co.uk

当我试图打开上面的URL(带点)时,它只会打印:

无法获取/搜索结果?majTFMin=0&majTFMax=100&majDOMCFMin=0&majDOMCFMax=100&majRefDomainsMin=0&majRefDomainsMax=100&majRefIPsMin=0&majRefIPsMax=100&majRefDomainsEDUMin=0&majRefDomainsEDUMax=100&majRefDomainsGOVMin=0&majRefDomainsGOVMax=100&selectedTLD=co.uk

没有其他,甚至没有任何HTML标记(已在视图源中检查过)

我读过很多这样的帖子。可以在不编码的情况下用于查询字符串,但我不明白为什么它在这里不起作用。我认为AngularJS有一些问题。

我正在使用ui路由器进行状态更改,并将值传递给控制器。

如有任何帮助,我们将不胜感激。

如果您在服务器上使用连接历史api回退(就像lite服务器一样),则默认情况下不会重写带点的URL。

连接历史api回退代码

if (parsedUrl.pathname.indexOf('.') !== -1) {
  logger(
    'Not rewriting',
    req.method,
    req.url,
    'because the path includes a dot (.) character.'
  );
  return next();
}

connect-history-api-fallback版本开始1.2.0允许使用带点的URL,您可以通过使用重写组来解决此问题

示例

如果你的带点的URL是/search-result,而你的angular应用程序位于index.html页面中,你可以向连接历史api回退添加一个重写规则,就像这个一样

rewrites: [
  {
    from: /^/search-result/,
    to: 'index.html'
    }
  }
]

最新更新