POST数据得到“丢失”的地方
问题描述:
UPDATE
因此,原来的互联网爆炸物对“安全”的束缚,以“弥补”为处于安全如此糟糕引起了我的问题。我应该先检查一下哈哈。感谢大家的投入,它给了我如何优化我的应用理念:以一个平台的应用程序集成dPOST数据得到“丢失”的地方
我写一个Web应用程序(在ASP.NET 3.5)。该平台的应用程序将用户的凭据,并将它们放入一个由含说,证书和岗位隐藏的项目到Web应用程序(default.aspx
)的形式的“空”的HTML页面:
<HTML>
<HEAD>
<SCRIPT LANGUAGE=JSCRIPT>
function OnLoad(){
try {
document.form1.submit();
}
catch(e){
}
}
</SCRIPT>
</HEAD>
<BODY OnLoad="OnLoad()">
<FORM ACTION="http://localhost:51816/gs_ontheweb/default.aspx" METHOD=POST NAME=form1 TARGET="_NEW">
<INPUT TYPE="HIDDEN" NAME="ClientID" VALUE="123456">
<INPUT TYPE="HIDDEN" NAME="Password" VALUE="2830088828">
<INPUT TYPE="HIDDEN" NAME="PracType" VALUE="051">
<INPUT TYPE="HIDDEN" NAME="Encrypt" VALUE="12345620081111">
</FORM>
</BODY>
</HTML>
当我default.aspx
页面被加载时,它调用下面的函数:
Dim ClientID As String = Request.Form("ClientID")
Dim PassWord As String = Request.Form("Password")
Dim PracType As String = Request.Form("PracType")
他们每个人造成空字符串。任何想法为什么发生这种情况?提前致谢。
编辑:有什么我需要配置在我的web.config
文件,使其正常工作? Request.Params(“<param name>
”)不起作用。
答
你的问题是表上的“目标”属性。这是为什么呢?
(我也采取了清理你的HTML了一点点的自由)
<html>
<head>
<title>Test JS Post</title>
<script type="text/javascript" language="javascript">
<!--
function OnLoad(){
try
{
alert("Posting...");
document.form1.submit();
}
catch(e)
{
alert("ERROR!");
alert(e);
}
}
//-->
</script>
</head>
<body onload="OnLoad()">
<form action="http://localhost:49684/Default.aspx" method="post" name="form1">
<input type="hidden" name="ClientID" value="123456" />
<input type="hidden" name="Password" value="2830088828" />
<input type="hidden" name="PracType" value="051" />
<input type="hidden" name="Encrypt" value="12345620081111" />
<h1>This is in the form. Submit me here:</h1><input type="submit" value="foo" />
</form>
</body>
</html>
在Default.aspx
后面的代码:
Private Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
For Each value As String In Request.Form.Keys
Debug.WriteLine(String.Format("{0} = ""{1}""", value, Request.Form.Item(value)))
Next
End Sub
答
HTML只是在用户的硬盘上?也许浏览器安全不会让这个POST,因为它被认为是一个风险。
作为一个测试 - 将精确的HTML文件放在您的网络服务器上,然后浏览到它。如果有效,可能是浏览器拒绝发送数据。您可以与Fiddler(用于IE)或FireFox中的Firebug进行检查。
答
为什么不使用System.Net.WebClient?
一些示例代码(抱歉,这是C#。看起来你找VB。我不能迅速转化。)
System.Net.WebClient wc = new System.Net.WebClient();
byte[] b;
byte[] res;
string formdata = "text=test text&password=secret&checkbox=on&textarea=a longer text sentence&submit=submit";
// encode the form data string into a byte array
b = System.Text.Encoding.ASCII.GetBytes(formdata);
// set the content type for a form
wc.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
// POST and get data
res = wc.UploadData("http://localhost:51816/gs_ontheweb/default.aspx", b);
//convert the return page from byte[] to ascii
string s = System.Text.Encoding.ASCII.GetString(res);
说这样的话,这可能是一种替代传输这些数据? – Anders 2008-11-12 21:07:19