【问题标题】:How to prevent manual URL change from reloading the angularjs application?如何防止手动 URL 更改重新加载 angularjs 应用程序?
【发布时间】:2019-02-05 09:51:00
【问题描述】:

我正在尝试从传入的 href 重定向中隐藏 url 中的敏感数据。当从 angularjs 控制器内部手动更改 url 时会出现问题,这会导致页面重新加载。

Catch:我无法控制将代码添加到具有包含 URL 的 href 的应用程序。

例如:

外部网址重定向“www.sample.com/subpath?sensitiveNumber=123456789”

我希望将网址更改为

“www.sample.com/subpath”

我确实尝试从以下 SO 线程中引用解决方案: Can you change a path without reloading the controller in AngularJS?

使用 reloadOnSearch 的问题是当另一个 url 带有不同的 url 数据作为参数时,它不会重新加载新数据。

我尝试的另一种方法是将传入的数据存储到浏览器的localStorage中,这样当页面在url更改时重新加载时就不需要知道敏感数据;但这会导致调用所有 Async 函数,从而影响性能。

这里是当前代码的路由sn-p

.when('/subpath') { template: '<templatePath>', controller: '<controllerName>', reloadOnSearch: false }

提前致谢

【问题讨论】:

  • 您确实知道,如果您“隐藏”敏感数据,每个用户在浏览器中检查您的站点network traffic 都将能够观察到该数据。您能分享一下您处理的是哪种数据吗?
  • 是的,您是对的,当您这么说时,如果我们确实检查网络流量,我们将在浏览器中看到所谓的敏感数据。但该问题的实施面向域合规因素,即:由于安全合规原因,数据不可见
  • @ymz - 至于我正在处理的数据,它只是 url 中的一个查询参数。试图阻止从 url 中删除查询参数后重新加载。
  • “Catch:我无法控制将代码添加到具有包含 url 的 href 的应用程序”.. 我真的认为获得访问权限将是最好的解决方案在那种情况下你可以拥有

标签: javascript angularjs routing


【解决方案1】:

将get请求改为post请求。这样数据就不会在url中发送了。

【讨论】:

  • 所以这不是一个 get/post 请求......它是一个来自 href 标记的重定向。例如:生产环境中有一个锚标记重定向到另一个应用程序,如下所示:&lt;a href="www.sample.com/subpath?sensitiveNumber=123456789"&gt;Hyperlink redirect&lt;/a&gt; 当我从这个 href 获取它时,没有请求发生,它只是 href 重定向。
  • 已经在项目中使用了角度路由,并尝试在这方面使用参数。没有成功。路由改变时页面仍然重新加载,从而破坏了单页应用程序的功能。
【解决方案2】:

感谢您的回复。我们必须克服这个问题的唯一方法是在服务层之间提供加密服务,并在我们的应用程序前端执行解密。截至目前,我们还没有针对此问题的经过验证的正确解决方案

【讨论】:

    猜你喜欢
    • 2011-03-04
    • 2021-10-02
    • 2018-11-02
    • 1970-01-01
    • 2013-05-08
    • 2015-03-23
    • 1970-01-01
    • 2010-10-11
    • 2011-11-14
    相关资源
    最近更新 更多