我服务的是静态html,我希望它们在没有<!-- comment -->
评论的情况下发送给客户端,因为它们可能会危及安全。ASP.NET:有没有一种方法来提供静态html文件,而无需编程注释?
有没有办法做到这一点?
类似的东西剃刀的@* comment *@
但对于HTML ...
我服务的是静态html,我希望它们在没有<!-- comment -->
评论的情况下发送给客户端,因为它们可能会危及安全。ASP.NET:有没有一种方法来提供静态html文件,而无需编程注释?
有没有办法做到这一点?
类似的东西剃刀的@* comment *@
但对于HTML ...
你可以在Razor的注释标记,而不是HTML注释标记之间写的评论。那些在前端不可见。
除此之外,您正在打印任何文本(不包括Razor和PHP等服务器端脚本)的html文件。除非您通过工具在服务器上缩小它们,否则无法从静态HTML中取出注释。但既然你说他们是静态的HTML页面,我猜你根本没有使用任何工具?
例如,您可以使用诸如http://www.willpeavy.com/minifier/之类的工具。
留下评论的安全风险应该不是那么糟糕。首先,您不应该在HTML注释中加入有价值的信息。他们现在主要用于显示元素开始和/或结束时其他程序员接管的位置。
您的JavaScript在网站上也是可见的。假设你使用ajax调用和数据库。这会造成比一些HTML评论更大的风险。很明显,你只需确保你不会分享会导致客户端评论中的安全问题的重要信息。
如果是服务于HTML自动化系统,你可以给它之前删除的评论,你可以使用这样的函数:
你可以使用HTML敏捷性包.NET库。这是一篇文章 说明如何使用它SO:如何使用HTML敏捷包
这是C#代码删除评论:
HtmlDocument doc = new HtmlDocument();
doc.Load("yourFile.htm");
// get all comment nodes using XPATH
foreach (HtmlNode comment in doc.DocumentNode.SelectNodes("//comment()"))
{
comment.ParentNode.RemoveChild(comment);
}
doc.Save(Console.Out); // displays doc w/o comments on console
来源:Removing HTML Comments(你可以找到很多更多选项)
在将html保存为静态文件或编辑现有文件以过滤掉注释之前触发这样的函数是一件简单的事情。
如果您正在讨论从HTML文件本身删除评论,您当然可以在NotePad中打开它们并手动删除评论。但我认为您正在讨论在页面发送到浏览器时实时删除它们。您希望评论保留在静态文件中。
如果您在经典模式下运行IIS,您将无法使用ASP.NET代码实时删除注释。但是,如果您运行的是integrated pipeline mode中的IIS,则可以挂接请求/响应管道和postprocess the HTML file,然后执行任何您想要的操作,例如在EndRequest事件处理程序中。
不确定解析页面和查找HTML注释以删除它们的细节 - 可能会非常棘手 - 看起来像someone else问这个问题,并且有几个答案可以在那里找到。
由于该文件是静态的,我将放入的任何Razor标签都会以文本形式呈现在页面上。 此外,我正在寻找一种方法来自动执行此操作时,文件...不是手工。 但你确实有一点。如果我需要评论我的html,也许这意味着我需要简化它;;) –
我不知道你的意思是文件是静态的。我以为你的意思只是HTML。 在这种情况下,除非您先将文件放入某种过滤器中,否则不可能。你是通过手动还是通过自动化的C#过程来传递静态文件?如果是通过自动化过程,则可以先放入一个函数来删除注释。 - 正如我在回答中所说的那样;它不可能隐藏html评论。 – NoobishPro
通过MVC控制器提供文件 –