是否有任何特殊注意事项尝试从HTML表单中读取数据,其中元素是输入类型=“密码”?当ColdFusion页面使用表单数据POST我的处理程序时,我的密码为null而不是键入的值。
以下是较大块的关键行:
string password = context.Request.Form [“strPassword”];
我有一个HTTPHandler.ashx代码文件,可以在发布时执行文件上传。以下是此代码的关键代码段:
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" />
我能够使用调试器来捕获它,并且震惊地看到之后: string password = context.Request.Form [“strPassword”];
... password = null
在即时窗口中,果然:
?context.Request.Form["strPassword"]
null
如果我在调试器中检查整个Form集合,我会看到正确的值(由&amp;分隔),并且没有任何重要的数据元素为null (但奇怪的是,数据前面包含一个加号(等号)!以下是来自immed窗口的片段:
&amp; strUsername = johna&amp; strPassword + = xxxxxxxx&amp; strDomain + = cbmiweb}
我有一个ASP.NET客户端POST到这个相同的HTTPHandler,并且工作正常。这里相同的表格数据显示没有干扰的PLUS标志:
&amp; strUsername = johna&amp; strPassword = xxxxxxxx&amp; strDomain = cbmiweb}
关于导致此问题的原因以及如何使用插入的PLUS标志格式化表格数据的任何想法?
编辑: ASP.NET表单和ColdFusion表单都指定了enctype =“multipart / form-data”,而后者嵌入了这些PLUS符号。
答案 0 :(得分:1)
加号是问题,它不应该在那里,你的冷冻转发请求到你的页面还是正在使用它的内部http请求引擎这样做?
由于空白区域出现加号,如果任何字符串连接导致在您发布的数据中插入空格,请检查您的coldfusion?