POST数据在某处“丢失”

时间:2008-11-12 18:50:53

标签: asp.net forms

更新

因此,事实证明互联网爆炸者对“安全”的束缚导致“弥补”因为安全性如此糟糕导致我的问题。我应该先检查一下哈哈。感谢大家的意见,它给了我关于如何优化我的应用程序的想法: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>”)不起作用。

3 个答案:

答案 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);