使用normalize-url删除所有URL查询参数

时间:2019-04-12 12:01:48

标签: url meteor

我正在尝试使用normalize-url软件包从URL中删除所有查询参数,但得到一些奇怪的结果。

我正在使用removeAllQueryParameters选项,如下所示:

{

let url = normalizeUrl(model.article.url,{removeAllQueryParameters: true});

 callServerMethod({
  name: 'addNewPost',
   data: {
       title: model.article.title,
       url: url,
                            },

并在调用将URL添加到数据库的方法时按如下方式使用它:

$string = '010101010001111';
$decVal = bindec($string);
$variable = 3;
$result = decbin(($decVal >> $variable) | (($decVal << (strlen($string) - $variable)) & ~(~0 << strlen($string))));
echo $result;

对于示例网址:https://example.com?utm_source=test&utm_medium=test&utm_campaign=test

我得到以下结果: https://example.com?utm_campaign=test

有趣的是,第二个示例URL:https://example.com?utm_source=test 结果为https://example.com-正确。

在要删除多个参数的情况下,该功能将跳过最后一个参数。

预先感谢您的提示。

2 个答案:

答案 0 :(得分:0)

searchParams.keys()返回Iterator,在迭代时修改源对象是个坏主意。

只需将键的副本复制到数组中,然后遍历它:

for (const key of [...urlObj.searchParams.keys()]) {
  urlObj.searchParams.delete(key);
}

答案 1 :(得分:0)

以下方法对我有用,但是,我不确定像这样设置urlObj.search是否是一种好习惯:

    if (options.removeAllQueryParameters) {
            urlObj.search = '';
        }