【问题标题】:Steam:// link not "unsafe"Steam:// 链接不是“不安全的”
【发布时间】:2014-04-07 01:52:18
【问题描述】:

我正在尝试让 Steam 的“添加好友”链接正常工作,但由于某种原因,我的环境无法正常工作。我对角度(第一个应用程序)非常陌生,所以我可能会遗漏一些巨大/明显的东西。这是我添加到我的配置和我的 html 中的代码。我正在使用角度 1.1.5。下面的 Steam 链接显示为“不安全”并且不起作用。卫生设施似乎没有按预期工作。

提前致谢!

@app.config(['$routeProvider', ($routeProvider) ->
   $routeProvider.
  when('/casters', {
    templateUrl: '../templates/casters/index.html',
        controller: 'CasterIndexCtrl'
      }).
    otherwise({
      templateUrl: '../templates/home.html',
      controller: 'HomeCtrl'
    }) 
], 
['$compileProvider', ($compileProvider) ->
$compileProvider.urlSanitizationWhitelist(/^\s*(https?|steam|mailto|file):/);
])

<tr ng-repeat="caster in casters">
    <td><a ng-href="steam://friends/add/{{caster.steam_id}}"><button type="button" class="butn btn-link">Add</button></a></td>
    <td>{{caster.name}}</td>
    <td><a href="http://twitch.tv/{{caster.twitch}}" target="_blank">{{caster.twitch}}</a></td>
    <td>Column content</td>
  </tr>

【问题讨论】:

    标签: angularjs ruby-on-rails-3 steam


    【解决方案1】:

    您需要对 href 进行清理:

    $compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|tel|file|steam):/);
    

    这基本上是将steam 附加到正则表达式in santizeUri.js

    相信 urlSanitizationWhitelist 在 1.2 版中已更改?我记得有一个类似的问题让这个基于博客工作并且只是在源代码中挖掘直到我找到答案。当时我遇到了同样的问题,angular 的文档已经关闭,但看起来像 they have been updated 有这些信息。

    此外,请确保您将 ngSanitize 作为依赖项并引用 angular-sanitize.js 文件。

    编辑:哦,我想念你在 1.1.5 上。我会看看我是否可以在那个版本中找到它。

    编辑 2:所以我创建了 a plunk,只使用了编译覆盖以允许 Steam,这可以启动 Steam。

    然后,我注意到您将两个配置函数传递给 .config(我想,我不阅读咖啡脚本)。

    试试这个:

    @app.config(['$routeProvider','$compileProvider', ($routeProvider, $compileProvider) ->
       $routeProvider.
      when('/casters', {
        templateUrl: '../templates/casters/index.html',
            controller: 'CasterIndexCtrl'
          }).
        otherwise({
          templateUrl: '../templates/home.html',
          controller: 'HomeCtrl'
        }) 
    
        $compileProvider.urlSanitizationWhitelist(/^\s*(https?|steam|mailto|file):/);
    ])
    

    http://code.angularjs.org/1.1.5/docs/api/angular.Module

    angular 1.1.5 的文档非常糟糕。他们并没有真正清楚地解释整个阵列注入器的事情。这个configFn 要么是单个函数,要么是要注入函数的依赖数组(最后一个数组元素)。

    【讨论】:

    • 是的,我找到了一个HrefSanitizationWhitelist,但它说它是用于更高版本的。我认为 urlSanitizationWhitelist 但也许(希望)我错了。我很乐意解决这个问题。
    • 我更新了我的答案。看起来可能是格式问题导致您使用了 configFn 参数的多个数组。
    • 你成功了。我错误地传递了函数。我只是在猜测应该如何传递它们,因为我找不到一个很好的例子来说明我在哪里进行多个配置交易。谢谢!!
    • 没问题。如果您不一定需要继续使用 1.1.5,我建议您升级到 1.2.x。我的团队在尝试弄清楚 1.1.5 上的事情时花了很多时间,而 1.2.2 的文档(我们现在正在使用)证明更有帮助。虽然相比之下,1.3.x 文档看起来相当完整。
    猜你喜欢
    • 2012-02-24
    • 1970-01-01
    • 2018-04-07
    • 1970-01-01
    • 2018-05-17
    • 2020-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多