【问题标题】:Retrieval of input type=password Request.Form["strPassword"] gives null检索输入类型 = 密码 Request.Form["strPassword"] 给出 null
【发布时间】:2024-01-24 00:30:02
【问题描述】:

在尝试从元素为 input type="Password" 的 HTML 表单中读取数据时,是否有任何特殊注意事项?当 ColdFusion 页面向我的处理程序发送表单数据时,我得到的密码为空,而不是键入的值。

这是下面较大块的关键行:

字符串密码 = context.Request.Form["strPassword"];

我有一个 HTTPHandler.ashx 代码文件,它在发布时执行文件上传。这是这段代码的关键sn-p:

        string username = context.Request.Form["strUsername"];
        if (String.IsNullOrEmpty(username))
        {
            IdentifyInvoker = GetUserInfo();
            brokerService = new Broker.FileService();
        }
        else
        {
            string password = context.Request.Form["strPassword"];
            string domain = context.Request.Form["strDomain"];
            IdentifyInvoker = GetInvokerInfoFromForm(username, password, domain);
            brokerService = new Broker.FileService(username,password,domain);
        }

上述代码发布的表单(来自 ColdFusion)如下所示:

<b>User Name</b> <input type="text" name="strUsername" id="strUsername" size="13" />   
<b>Password</b> <input type="Password" name="strPassword" id="strPassword" size="15" />   
<b>Domain</b> <input type="text" name="strDomain" id="strDomain" size="13" value="cbmiweb" />   

我能够用调试器捕获这个问题,然后震惊地看到: 字符串密码 = context.Request.Form["strPassword"];

...密码=空

在即时窗口中,果然:

?context.Request.Form["strPassword"]
null

如果我在调试器中检查整个表单集合,我会看到布局正确的值(由 & 分隔)并且没有一个重要的数据元素为空 (但奇怪的是,数据前面包含一个加号等号)!这是来自即时窗口的sn-p:

&strUsername=johna&strPassword+=xxxxxxxx&strDomain+=cbmiweb}

我有一个 ASP.NET 客户端,它可以 POST 到同一个 HTTPHandler 并且工作正常。此处显示相同的表单数据,但没有干扰加号:

&strUsername=johna&strPassword=xxxxxxxx&strDomain=cbmiweb}

关于导致此问题的原因以及在使用中间加号格式化表单数据时如何检索表单数据的任何想法?

编辑: ASP.NET 表单和 ColdFusion 表单都指定 enctype="multipart/form-data" 但后者嵌入了这些加号。

【问题讨论】:

  • 你能发布你的coldfusion代码吗?
  • 我会要求它...但我的 ColdFusion 同事根据您确认的建议解决了问题,即 Response.Form 中存在 + 是导致问题的原因。

标签: asp.net html forms coldfusion request.form


【解决方案1】:

加号是问题,它不应该存在,是您的coldfusion转发请求到您的页面还是使用其内部的http请求引擎这样做?

由于空格出现加号,请检查您的coldfusion是否有任何字符串连接导致在您发布的数据中插入空格?

【讨论】:

  • 澄清一下,使用的 URL 编码方案将 URL 中的空格字符替换为“+”:en.wikipedia.org/wiki/…
  • 是的,你是对的,这就是我要求冷融合代码的原因