因此,事实证明互联网爆炸者对“安全”的束缚导致“弥补”因为安全性如此糟糕导致我的问题。我应该先检查一下哈哈。感谢大家的意见,它给了我关于如何优化我的应用程序的想法:D
我正在编写一个与平台应用程序集成的Web应用程序(在ASP.NET 3.5中)。平台应用程序获取用户的凭据并将其放入“空”HTML页面,该页面包含一个表单,其中包含隐藏项目,其中包含所述凭据和WebTS的POSTS( default.aspx
):
<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>
”)不起作用。
答案 0 :(得分:3)
您的问题是表单上的“目标”属性。这是为什么?
(我也冒昧地清理你的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
答案 1 :(得分:0)
HTML只是在用户的硬盘上吗?也许浏览器安全不会让那个POST,因为它被认为是一种风险。
作为测试 - 获取确切的HTML文件并将其放在您的网络服务器上,然后浏览到它。如果有效,可能是浏览器拒绝发送数据。您可以查看Fiddler(适用于IE)或FireFox中的Firebug。
答案 2 :(得分:0)
为什么不使用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);