【问题标题】:"dot" in query string parameter - AngularJS查询字符串参数中的“点” - AngularJS
【发布时间】:2015-11-05 10:41:55
【问题描述】:

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

这个 URL 工作正常:

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

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

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

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

不能得到/search-result?majTFMin=0&majTFMax=100&majDOMCFMin=0&majDOMCFMax=100&majRefDomainsMin=0&majRefDomainsMax=100&majRefIPsMin=0&majRefIPsMax=100&majRefDomainsEDUMin=0&majRefDomainsEDUMax=100&majRefDomainsGOVMin=0&majRefDomainsGOVMax=100&selectedTLDs=co.uk P>

并且没有别的,甚至没有任何HTML标签(已在查看源代码中检查过)

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

我正在使用ui-router 进行状态更改并将值传递给控制器​​。

任何帮助将不胜感激。

【问题讨论】:

标签: angularjs url query-string


【解决方案1】:

如果您在服务器上使用connect-history-api-fallback(如lite-server 那样),默认情况下不会重写带有点的网址。

connect-history-api-fallback code

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开始URLs with dots are allowed,您可以使用rewrite roule解决this problem

示例

如果您的带点的 URL 是 /search-result 并且您的 Angular 应用程序位于 index.html 页面中,您可以像这样向 connect-history-api-fallback 添加重写规则

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

【讨论】:

    猜你喜欢
    • 2014-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    • 1970-01-01
    • 2016-05-30
    • 1970-01-01
    • 2016-10-01
    相关资源
    最近更新 更多