我有压缩HTTP请求的HTTP模块。
public override void Write(byte[] buffer, int offset, int count)
{
byte[] data = new byte[count];
Buffer.BlockCopy(buffer, offset, data, 0, count);
string html = System.Text.Encoding.Default.GetString(buffer);
Regex reg = new Regex(@"(?<=[^])\t{2,}|(?<=[>])\s{2,}(?=[<])|(?<=[>])\s{2,11}(?=[<])|(?=[\n])\s{2,}");
html = reg.Replace(html, string.Empty);
byte[] outdata = System.Text.Encoding.Default.GetBytes(html);
_sink.Write(outdata, 0, outdata.GetLength(0));
}
如何转义所有内联脚本? 这是我的脚本正则表达式。
Regex reg = new Regex("<script[^>]*?>[\\w|\\t|\\r|\\W]*?</script>", (RegexOptions.Singleline | RegexOptions.IgnoreCase));
答案 0 :(得分:1)
我真的怀疑你想要使用Encoding.Default
,这是特定于你的系统的。除此之外,为什么不使用更标准的压缩方式,即gzip二进制数据而不是文本操作?我怀疑这会产生更大的影响,并且在意外破坏HTML方面几乎不会那么脆弱。此外,您不再需要担心编码。