【发布时间】: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