AngularJS 中a标签unsafe导致的一系列问题。

本文分享了一个关于AngularJS中a标签href属性被默认设置为unsafe的安全检查机制导致的问题及解决办法。当在自定义指令中使用a标签并尝试通过JavaScript进行页面刷新时,会触发此安全机制,导致页面无法正常刷新。文章详细描述了如何通过配置$compileProvider的aHrefSanitizationWhitelist方法来解决这一问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个很小很小的bug,明知道很小,但是就是小到找了两个小时,一点都不夸张,此处记录下。

AngularJS为了安全检查功能给a标签的href默认成unsafe(很变态有木有)

案例

使用directive定义的公用头部组件:

<body ng-controller="mainController">
	<otham-head></otham-head>
</body>

在atdetail.html中调用
组建中有包含退出登录的a标签(如果不用a标签,倒是不会出现这个问题,算是自己踩得坑,但迟早要踩)
退出登录的操作
a标签

.
.
<li>
	<a href="javascript:;" ng-click="quit()">退出</a>
</li>
.
.

然后退出操作在组件中

.
.
$scope.quit = ()=>{
	handleLocalStorage('remove','GothamUser');
	$window.location.reload()
}
.
.

坑点:点击了a标签 本地localstorage清除成功,页面伪刷新了一次,但是页面内容没变,写的逻辑是退出登录后显示【登录/注册】按钮,最终控制台中发现每次点击退出都会提示如下图:
a标签unsafe
解决方法:
在声明angular应用是,使用$compileProvider服务进行配置

var app = angular.module('Gotham',[])
	app.config(['$compileProvider',function ($compileProvider) {
		$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|tel|file|sms|javascript):/);
	}]);

结尾:AngularJS中a标签的unsafe行为虽然早就知道,但是依然会对开发中一些其他的操作产生影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值