我正在使用Angular开发一个Cordova应用程序,而且我正在为Windows开发一些东西。
我正在尝试这样的事情:
<img ng-src="{{dataDirectory + buildingPhoto.FilenamePhoto}}" class="full-width">
dataDirectory =“ms-appdata:/// local”
buildingPhoto.FilenamePhoto =“VOL-00122kaftfoto_thumb.png”
但这只会导致使用此代码破坏图像:
<img class="full-width" src="unsafe:ms-appdata:///local/VOL-00122kaftfoto_thumb.png" ng-src="ms-appdata:///local/VOL-00122kaftfoto_thumb.png">
我认为unsafe
表示前缀被视为不安全且需要列入白名单,因此我在app.js
添加了此内容:
.config(['$compileProvider', function($compileProvider) {
$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|ghttps?|ms-appx|ms-appdata|x-wmapp0):/);
$compileProvider.imgSrcSanitizationWhitelist(/^\s*(https?|ftp|file|ms-appx|ms-appdata|x-wmapp0):|data:image\//);
}])
我还在index.html中添加了这个元标记:
<meta http-equiv="Content-Security-Policy" content="ms-appdata *; default-src *; img-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'" />
但它不起作用,所以我有点卡在这里,希望有人能把我推向正确的方向。
答案 0 :(得分:6)
使用以下代码进行图像src白名单修复了该问题:
var query = NhSession.Query<ServiceContract>()
.Where(s => s.ObjectOfficer.Manager.FirstName == owner.FirstName
&& s.ObjectOfficer.Manager.LastName == owner.LastName);
contracts = query.ToList();
同时确保$ appProvider在app.js 中的初始设置后不会被其他任何地方覆盖,这实际上导致了Joris的问题。
答案 1 :(得分:2)
经过几天的搜索,我终于找到了解决问题的方法 我所做的一切都是正确的。唯一的问题是我在我的app.js中应用了所有这些,而在我的router.js中,所有内容都被不同的代码覆盖了。
课程:在应用补丁之前,请始终检查角度应用程序是否在其他文件中具有配置
答案 2 :(得分:1)
这是最好的解决方案。
myApp.config(['$compileProvider', function ($compileProvider) {
$compileProvider.imgSrcSanitizationWhitelist(/^\s*(https?|ftp|file|chrome-extension|ms-appx-web|ms-appx):|data:image\//);
$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|chrome-extension|ms-appx-web|ms-appx):/);
}]);