gpt4 book ai didi

typescript - 警告 : sanitizing unsafe style value url

转载 作者:太空狗 更新时间:2023-10-29 16:45:32 28 4
gpt4 key购买 nike

我想在我的 Angular 2 应用程序的组件模板中设置 DIV 的背景图像。但是,我的控制台中不断收到以下警告,但我没有得到预期的效果……我不确定动态 CSS 背景图像是否由于 Angular2 中的安全限制而被阻止,或者我的 HTML 模板是否已损坏。

这是我在控制台中看到的警告(我已将我的 img url 更改为 /img/path/is/correct.png:

WARNING: sanitizing unsafe style value url(SafeValue must use [property]=binding: /img/path/is/correct.png (see http://g.co/ng/security#xss)) (see http://g.co/ng/security#xss).

问题是我使用 Angular2 中的 DomSanitizationService 清理注入(inject)到我的模板中的内容。这是我的模板中的 HTML:

<div>
<div>
<div class="header"
*ngIf="image"
[style.background-image]="'url(' + image + ')'">
</div>

<div class="zone">
<div>
<div>
<h1 [innerHTML]="header"></h1>
</div>
<div class="zone__content">
<p
*ngFor="let contentSegment of content"
[innerHTML]="contentSegment"></p>
</div>
</div>
</div>
</div>
</div>

这是组件...

Import {
DomSanitizationService,
SafeHtml,
SafeUrl,
SafeStyle
} from '@angular/platform-browser';

@Component({
selector: 'example',
templateUrl: 'src/content/example.component.html'
})
export class CardComponent implements OnChanges {

public header:SafeHtml;
public content:SafeHtml[];
public image:SafeStyle;
public isActive:boolean;
public isExtended:boolean;

constructor(private sanitization:DomSanitizationService) {
}

ngOnChanges():void {
map(this.element, this);

function map(element:Card, instance:CardComponent):void {
if (element) {
instance.header = instance.sanitization.bypassSecurityTrustHtml(element.header);

instance.content = _.map(instance.element.content, (input:string):SafeHtml => {
return instance.sanitization.bypassSecurityTrustHtml(input);
});

if (element.image) {
/* Here is the problem... I have also used bypassSecurityTrustUrl */
instance.image = instance.sanitization.bypassSecurityTrustStyle(element.image);
} else {
instance.image = null;
}

}
}
}
}

请注意,当我使用 [src]="image"绑定(bind)到模板时,例如:

<div *ngIf="image">
<img [src]="image">
</div>

image 是使用 bypassSecurityTrustUrl 传递的,一切似乎都运行良好......任何人都可以看到我做错了什么吗?

最佳答案

您必须将整个 url 语句包装在 bypassSecurityTrustStyle 中:

<div class="header" *ngIf="image" [style.background-image]="image"></div>

还有

this.image = this.sanitization.bypassSecurityTrustStyle(`url(${element.image})`);

否则不被视为有效的样式属性

关于typescript - 警告 : sanitizing unsafe style value url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38593515/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com