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进行检查。

+0

说这样的话,这可能是一种替代传输这些数据? – Anders 2008-11-12 21:07:19

为什么不使用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); 
+0

您发布的这段代码在应用程序方面是否正确?最后一行是在网页上? – Anders 2008-11-12 22:31:45

+0

此代码位于应用程序端。最后一行将为您的应用程序返回Web服务器响应您的POST的任何答案。 服务器端应该接近你已经做的事情。 – Moose 2008-11-12 22:35:35