我试图在查询字符串参数中使用句点(.),但它不起作用。
此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'
}
}
]