什么样的事情会导致ngSanitize抛出Parse Error

时间:2013-03-13 14:28:20

标签: angularjs

我有一个解析HTML的AngularJS应用程序,主要来自电子邮件。在某些情况下,data-bind-html将抛出Parse Error但不是所有情况。我一直无法确定原因。

是否有人知道可能导致错误的某些类型的令牌或语法?

以下是一个文件的示例:

  

,   
  
  我收到以下错误消息......:

     

----------------------------------------------- -------------------------服务器遇到阻止

的意外情况      

履行请求。

     

HTTP_Status = 500(内部服务器错误)

     

网址=

     

-----------------------------------------请求标题   ----------------------------------------- POST / ss / servlet / FooServlet / HTTP /1.1接受:接受: / 主持人:mydomain.org内容长度:141   User-Agent:FooBar / 2.1.94 Pragma:no-cache Cache-Control:no-cache   内容类型:application / x-www-form-urlencoded;字符集= “UTF-8”   连接:Keep-Alive Cookie:   BIGipServerpool_cookie_apps_ss_8188 = rd860o00000000000000000000ffff0a0ad0aco8188;   JSESSIONID = 5215F941A173B6127E9A95B3E99E3A74

     

----------------------------------------- Response Headers   ----------------------------------------- HTTP / 1.1 500内部服务器错误服务器: Apache-Coyote / 1.1 Set-Cookie:   JSESSIONID = A9B7C98E5359D961DC8958F87CCCF49E;路径= / SS   内容 - 处理:附件;文件名= “spreadsheet.csv”   内容描述:spreadsheet.csv Content-Transfer-Encoding:二进制   Content-Type:application / csv; charset = ISO-8859-1 Transfer-Encoding:   chunked日期:2013年3月6日星期三18:46:19 GMT连接:关闭

     

-------------...

1 个答案:

答案 0 :(得分:0)

电子邮件可能包含大量任意编码和无效HTML,例如<email@domain.com>。为了消除解析错误,我实现了自己的过滤器,它在通过ngSanitize / bind-html之前生效。

ng-bind-html="obj.emailContent | sanitizeEmail"

myModule.filter('sanitizeEmail', function() {
  return function(input) {
    return input.replace(/<[\w-]*\.[\w-]*>/g, '').replace(/<[\w\.\$-]+[\:@].*>/g, '');
  };
});