加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – AugluarJS截断尾随等号

发布时间:2020-12-17 17:14:23 所属栏目:安全 来源:网络整理
导读:AngularJS在路由到它们时截断尾随等号.我有一个base64字符串,需要作为查询参数添加到url(路由) 例如:http://example.com/#!/updatepassword?code=NnuW3q49QW38Mf-Cg== 这加载为: ????http://example.com/#!/updatepassword?code=NnuW3q49QW38Mf-Cg 这有解
AngularJS在路由到它们时截断尾随等号.我有一个base64字符串,需要作为查询参数添加到url(路由)

例如:http://example.com/#!/updatepassword?code=NnuW3q49QW38Mf-Cg==

这加载为:
????http://example.com/#!/updatepassword?code=NnuW3q49QW38Mf-Cg

这有解决方法吗?

解决方法

如果您尝试将路由设置为字符串,则需要转义=符号.那是因为这个字符在查询字符串中有特殊含义 – 它将参数名称与其值分开.

所以,一个解决方案可能是:

var query = "code=NnuW3q49QW38Mf-Cg==";
$location.url("/some/path?" + encodeURIComponent(query));

encodeURIComponent()会做什么,它会替换所有特殊字符 – =将替换为=例如.这将阻止它被解释为键值分隔符.

如果您只想更改查询字符串参数,而不是整个URL,您还可以使用$location.search()方法:

$location.search("code","NnuW3q49QW38Mf-Cg==");

只记得将两个参数传递给该方法,而不是一个.如果你这样做:

$location.search("code=NnuW3q49QW38Mf-Cg==");

=符号不会被转义,只会被剥离.

Angular在内部使用parseKeyValue()函数来解析查询字符串,可以找到here.您可以看到正在对=符号进行拆分.这就是他们被剥夺的原因.

但是如果你看一下.search() method implementation,你会发现只有在你为.search()提供一个参数时才会调用parseKeyValue().如果您将参数的名称作为第一个参数提供,而将值作为第二个参数提供,则不会调用它.

偷看源代码也提出了另一个解决方案:

$location.search({"code": "NnuW3q49QW38Mf-Cg=="});

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读