0

我在很多花盆中读到格式错误的 URI 错误是由于 angularjs 覆盖了encodeURIComponentwith encodeUriQuery

有什么方法可以encodeUriQuery在我的控制器或组件中覆盖而不更改角度文件?

4

1 回答 1

0

两者encodeURIComponentangular.$$encodeUriQuery正确编码%字符:

console.log(angular.$$encodeUriQuery("%"));
console.log(encodeURIComponent("%"));
<script src="//unpkg.com/angular/angular.js"></script>

%字符是不允许的,并且永远不应出现在 URL/URI 中。

有一些字符是不允许出现的并且永远不应出现在 URL/URI 中、保留字符(如下所述)以及在某些情况下可能会导致问题但被标记为“不明智”或“不安全”的其他字符。RFC-1738 (URLs) 和RFC-2396 (URIs)中清楚地说明了字符受限的原因。请注意,较新的RFC-3986(对 RFC-1738 的更新)定义了在给定上下文中允许使用哪些字符的构造,但较旧的规范提供了一个更简单、更通用的描述,说明哪些字符在以下规则中是不允许的。

URI 语法中不允许使用的排除的 US-ASCII 字符:

   control     = <US-ASCII coded characters 00-1F and 7F hexadecimal>
   space       = <US-ASCII coded character 20 hexadecimal>
   delims      = "<" | ">" | "#" | "%" | <">

字符“#”被排除在外,因为它用于将 URI 与片段标识符分隔开。百分比字符“%”被排除在外,因为它用于转义字符的编码。换句话说,“#”和“%”是必须在特定上下文中使用的保留字符。

哪些字符使 URL 无效?——这个答案

于 2019-11-12T15:51:33.957 回答