gpt4 book ai didi

javascript - AngularJS $sceDelegate 正则表达式 : Trouble whitelisting similar domains?

转载 作者:行者123 更新时间:2023-11-29 19:25:39 25 4
gpt4 key购买 nike

我需要将一些作为 {{vars}} 传递给一些 iframe src 的 url 列入白名单。

域名是:

1 : http://chateauversailles.fr
2 : http://www.chateauversailles-spectacles.fr/


这适用于所有 #1 网址:

$sceDelegateProvider.resourceUrlWhitelist(['self', new RegExp('^(http[s]?):\/\/(w{3}.)?chateauversailles\.fr/.+$')]);


一旦我在域 #2 上尝试相同的规则:

$sceDelegateProvider.resourceUrlWhitelist(['self', new RegExp('^(http[s]?):\/\/(w{3}.)?chateauversailles\.fr/.+$')]);
$sceDelegateProvider.resourceUrlWhitelist(['self', new RegExp('^(http[s]?):\/\/(w{3}.)?chateauversailles\-spectacles\.fr/.+$')]);

它破坏了所有 iframes src,包括带有常见 $sce 错误的域 #1 调用:[$sce:insecurl] Blocked loading resource from url not allowed by $sceDelegate policy


如果我尝试将语句 #2 放在 #1 之前,域 #1 的 url 会被列入白名单,但不会列入 #2。

我怀疑罪魁祸首是正则表达式,但它们对我来说似乎还不错,但显然对于 $sce 来说还不够。

最佳答案

您可以使用可选组将两个语句“合并”为一个:

$sceDelegateProvider.resourceUrlWhitelist(['self', new RegExp('^(https?):\\/\\/(w{3}\\.)?chateauversailles(-spectacles)?\\.fr/.+$')]);

请注意,在使用 RegExp 构造函数时需要使用双重转义。

正则表达式解释:

  • ^ - 字符串 anchor 的开始
  • (https?) - 匹配 httphttps 的捕获组(请注意,如果您不使用反向引用,则可以删除圆括号)
  • :\\/\\/ - 按字面匹配 ://(请注意,您不必在构造函数中转义斜线,因为它不允许分隔符,所以你可以这样写 ://)
  • (w{3}\\.)? - 匹配字母 w 的可选捕获组(由于 ? 量词) , 恰好出现 3 次和一个字面点
  • chateauversailles - 匹配指定的字母序列 1 次
  • (-spectacles)? - 匹配 -spectacles 的可选组或由于 ? 量词而没有匹配。
  • \\.fr/ - 字面上匹配 .fr/
  • .+ - 匹配换行符以外的任何 1 个或多个字符
  • $ - 字符串结尾。

关于javascript - AngularJS $sceDelegate 正则表达式 : Trouble whitelisting similar domains?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30942491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com