如何从JSON响应中删除HTML标记

时间:2018-03-06 17:54:18

标签: asp.net sql-server angular

对于管理员:我在这里检查了类似的主题但不幸的是我没有找到答案。

我正在尝试从http GET响应中删除所有html标记。 我有一个用ASP.NET MVC编写的控制器,它调用数据库程序。这些过程返回json,其中存在html标记。 应用程序是用Angular4框架编写的。 我认为剥离所有html标签并用这个标签替换它们的最佳位置是什么:

& --> &
 < --> &lt;
 > --> &gt;
 " --> &quot;
 ' --> &#x27;     &apos; not recommended because its not in the HTML spec (See: section 24.4.1) &apos; is in the XML and XHTML specs.
 / --> &#x2F;     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时起作用。 我会很感激所有提示。

2 个答案:

答案 0 :(得分:1)

使用此函数删除 HTML 标签

说明。

1)RemoveHTMLTags(string str) 获取json字符串。

  1. 将json字符串与正则表达式“<[^>]*>”进行比较。

  2. 如果找到任何 HTMl 标签,从 json 字符串中删除该标签。

  3. 返回不含 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中的字符