对于管理员:我在这里检查了类似的主题但不幸的是我没有找到答案。
我正在尝试从http GET响应中删除所有html标记。 我有一个用ASP.NET MVC编写的控制器,它调用数据库程序。这些过程返回json,其中存在html标记。 应用程序是用Angular4框架编写的。 我认为剥离所有html标签并用这个标签替换它们的最佳位置是什么:
& --> &
< --> <
> --> >
" --> "
' --> ' ' not recommended because its not in the HTML spec (See: section 24.4.1) ' is in the XML and XHTML specs.
/ --> / forward slash is included as it helps end an HTML entity
MS SQL数据库中的过程以这种方式返回JSON数据:
SELECT * FROM USERS FOR JSON AUTO
MVC Controller收到此字符串并返回到应用程序:
object response= ExecuteProcedure("GetAllUsers");
return response;
在应用程序中,我用这种方式调用API:
getJson(url: string): Observable<any> {
return this.http.get(url).map(res => res.json()).catch(this.handleError);
}
令我感到困惑的是,为什么XSS在应用程序中不起作用,但在我直接从浏览器调用API时起作用。 我会很感激所有提示。
答案 0 :(得分:1)
使用此函数删除 HTML 标签
说明。
1)RemoveHTMLTags(string str) 获取json字符串。
将json字符串与正则表达式“<[^>]*>”进行比较。
如果找到任何 HTMl 标签,从 json 字符串中删除该标签。
返回不含 html 标签的 Json 字符串。
public string RemoveHTMLTags(string str)
{
System.Text.RegularExpressions.Regex rx =
new System.Text.RegularExpressions.Regex("<[^>]*>");
str = rx.Replace(str, "");
return str;
}
答案 1 :(得分:0)
这个怎么样
return this.http.get(url).map(res => {
let theJson = res.json();
let theString = theJson.stringify();
return theString.replace(/<[^>]*>/g, '');
}).catch(this.handleError);
这假设您没有任何'&lt;'或'&gt;'标签之外的html中的字符