جاوااسکریپت - AngularJS آدرسهای اینترنتی را در صفحه افزونه به «غیرامن» تغییر میدهد
من در حال تلاش برای استفاده از انگولار با یک لیست از برنامهها هستم، و هرکدام یک لینک برای دیدن جزئیات بیشتر یک برنامه هستند (apps/app.id):
<a id="{{app.id}}" href="apps/{{app.id}}" >{{app.name}}</a>
هر بار که روی یکی از این لینکها کلیک میکنم، کروم URL را به صورت نشان میدهد
unsafe:chrome-extension://kpbipnfncdpgejhmdneaagc.../apps/app.id
عبارت unsafe: از کجا آمده است؟
پاسخ شماره ۱
شما نیاز دارید به طور صریح پروتکلهای URL را با استفاده از یک عبارت منظم به لیست سفید Angular اضافه کنید. تنها http، https، ftp و mailto به طور پیشفرض فعال هستند. Angular هنگام استفاده از پروتکلی مانند chrome-extension:، یک URL که در لیست سفید نیست را با unsafe: پیشفرض میکند.
یک مکان مناسب برای سفید کردن پروتکل chrome-extension: در بلوک پیکربندی ماژول شما خواهد بود:
var app = angular.module( 'myApp', [] )
.config( [
'$compileProvider',
function( $compileProvider )
{
$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|chrome-extension):/);
// Angular before v1.2 uses $compileProvider.urlSanitizationWhitelist(...)
}
]);
همین روش وقتی که نیاز به استفاده از پروتکلهایی مانند file: و tel: دارید نیز صادق است.
لطفاً برای اطلاعات بیشتر به مستندات API $compileProvider در AngularJS مراجعه کنید.
پاسخ شماره ۲
در صورتی که کسی این مشکل را با تصاویر هم داشته باشد:
app.config(['$compileProvider', function ($compileProvider) {
$compileProvider.imgSrcSanitizationWhitelist(/^\s*(https?|local|data|chrome-extension):/);
}]);
