Java 在Angular 5应用程序中从Spring Boot API获取HTML文件时,某些属性会被删除
当通过前端带有Angular 4 app的API从Spring Boot后端获取HTML文件时,类型为Java 在Angular 5应用程序中从Spring Boot API获取HTML文件时,某些属性会被删除,java,html,angular,rest,spring-boot,Java,Html,Angular,Rest,Spring Boot,当通过前端带有Angular 4 app的API从Spring Boot后端获取HTML文件时,类型为id、name、data-*的HTML标记属性被剥离,但class属性类型仍然保留。这是什么原因,因为我似乎找不到它?如果您的意思是当您绑定到模板中某个元素的innerHTML时,属性被剥离,那么这些属性似乎是消毒器不允许的。可能主要是因为它们在Angular应用程序中并不实用。我不知道id和data是否也被认为是潜在的不安全因素。我知道表单、输入、按钮等都是无用的name 允许的属性列在htm
id
、name
、data-*
的HTML标记属性被剥离,但class
属性类型仍然保留。这是什么原因,因为我似乎找不到它?如果您的意思是当您绑定到模板中某个元素的innerHTML时,属性被剥离,那么这些属性似乎是消毒器不允许的。可能主要是因为它们在Angular应用程序中并不实用。我不知道id
和data
是否也被认为是潜在的不安全因素。我知道表单、输入、按钮等都是无用的name
允许的属性列在html_sanitizer.ts()中:
如果您确实需要id、名称或数据属性(为什么会这样?),并且可以信任您的html 110%,即它不是来自任何用户输入,或者您已经在服务器端对其进行了清理,则可以在绑定(或在管道中)之前使用它调用domsanizer.bypassSecurityTrustHtml()保持html不变。Angular HttpClient肯定不会这样做,它不会触及任何html,它将其视为纯文本,即一个字符串。如果您在浏览器开发工具中检查响应,这些属性是否已经在服务器端剥离?
const HTML_ATTRS = tagSet('abbr,accesskey,align,alt,autoplay,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,'
+ 'compact,controls,coords,datetime,default,dir,download,face,headers,height,hidden,hreflang,hspace,' + 'ismap,itemscope,itemprop,kind,label,lang,language,loop,media,muted,nohref,nowrap,open,preload,rel,rev,role,rows,rowspan,rules,' + 'scope,scrolling,shape,size,sizes,span,srclang,start,summary,tabindex,target,title,translate,type,usemap,' +
'valign,value,vspace,width');