You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET MVC传递HTML参数触发危险请求错误的解决方法求助

解决HTML转PDF时的“危险请求参数”错误

问题描述

使用iTextSharp实现HTML转PDF功能,点击页面图标调用Controller的Export方法传递HTML字符串时,触发错误:

A potentially dangerous Request.QueryString value was detected from the client (Html="<!DOCTYPE html PUBLI...")

核心问题分析

  1. 请求方式不匹配:Controller标记为[HttpPost],但View通过<a>标签发起GET请求,不仅参数接收逻辑冲突,GET请求的QueryString对HTML内容的拦截规则更严格。
  2. 参数名不对应:View传递的参数名是Html,但Controller接收参数名为GridHtml,导致参数无法正确绑定。
  3. ASP.NET请求验证拦截:默认情况下,ASP.NET会拦截包含HTML标签的QueryString/Form数据,防止XSS攻击。

解决方案

1. 修正请求方式为POST

将GET请求改为POST,避免HTML内容暴露在QueryString中,同时适配Controller的[HttpPost]标记。修改View代码如下:

@foreach (var item in Model.RecordEntries)
{
    using (Html.BeginForm("Export", "Home", FormMethod.Post, new { target = "_blank", rel = "noopener noreferrer" }))
    {
        @Html.Hidden("GridHtml", item.Html)
        <button type="submit" style="border: none; background: transparent; padding: 0; cursor: pointer;">
            <i class="fas fa-eye"></i>
        </button>
    }
}

2. 正确禁用目标参数的请求验证

在Controller的参数上添加[AllowHtml]属性(比全局的[ValidateInput(false)]更安全,仅针对当前参数关闭验证):

[HttpPost]
public FileResult Export([AllowHtml] string GridHtml)
{
    using (MemoryStream stream = new System.IO.MemoryStream())
    {
        StringReader sr = new StringReader(GridHtml);
        Document pdfDoc = new Document(iTextSharp.text.PageSize.A4, 10f, 10f, 100f, 0f);
        PdfWriter writer = PdfWriter.GetInstance(pdfDoc, stream);
        pdfDoc.Open();
        XMLWorkerHelper.GetInstance().ParseXHtml(writer, pdfDoc, sr);
        pdfDoc.Close();
        return File(stream.ToArray(), "application/pdf", "Grid.pdf");
    }
}

3. 适配.NET版本的额外配置(可选)

如果使用.NET 4.0及以上版本,需要在web.config中添加以下配置,确保请求验证规则兼容:

<system.web>
    <httpRuntime requestValidationMode="2.0" />
</system.web>

关键说明

  • POST请求更适合传递HTML这类长内容,避免GET请求的QueryString长度限制和安全拦截。
  • [AllowHtml]仅对指定参数关闭验证,相比全局禁用验证,安全性更高。
  • 确保参数名在View和Controller中完全一致,否则会出现参数绑定失败的问题。

内容的提问来源于stack exchange,提问作者Michaelweston

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 13:57:35