我目前有一个应用程序,其中包含一个带沙箱的iframe,因此它可以阻止框架像这样访问顶部导航:
<iframe sandbox="allow-same-origin allow-scripts allow-popups allow-forms allow-pointer-lock" class="iframe" ng-src="{{source_url}}"></iframe>
source_url包含一个重定向到“X”的网址“Y”,其中显示了我需要的内容。沙箱iframe阻止它将我的整个应用程序重定向到站点“X”。问题是它也阻止框架在其中重定向并显示“Y”,我需要框架来显示该网站“X”,有没有办法来实现这个?找到一种方法来捕获尝试重定向到“X”并更改iframe source_url是否可行?
提前多多感谢,问候!
答案 0 :(得分:0)
这是很久以前的事了,所以我可能会对此有点生疏,但我的解决方案最终是离开沙箱iframe(以防止框架访问顶部导航)但没有初始加载内容使用ng-if,然后提取网址&#34; X&#34;我想在我的控制器上显示,最后使用$sce.trustAsResourceUrl给source_url加载框架。
如下所示:
在我的控制器上:
app.controller('myCtrl', function($scope, $routeParams, $http, $sce){
$scope.load_frame = false;
...
$scope.source_url = $sce.trustAsResourceUrl(url_found);
在我看来
<iframe sandbox="allow-same-origin allow-scripts allow-popups allow-forms allow-pointer-lock" class="iframe" ng-if="load_frame" ng-src="{{source_url}}"></iframe>
因此,当我更改load_frame的值时,它会加载受信任的URL。不是最好的,但那一刻是我可以解决的问题。希望能帮到某人:)