2008-11-12 49 views
0

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>」)不起作用。

回答

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 
0

HTML只是在用戶的硬盤上?也許瀏覽器安全不會讓這個POST,因爲它被認爲是一個風險。

作爲一個測試 - 將精確的HTML文件放在您的網絡服務器上,然後瀏覽到它。如果有效,可能是瀏覽器拒絕發送數據。您可以與Fiddler(用於IE)或FireFox中的Firebug進行檢查。

+0

說這樣的話,這可能是一種替代傳輸這些數據? – Anders 2008-11-12 21:07:19

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); 
+0

您發佈的這段代碼在應用程序方面是否正確?最後一行是在網頁上? – Anders 2008-11-12 22:31:45

+0

此代碼位於應用程序端。最後一行將爲您的應用程序返回Web服務器響應您的POST的任何答案。 服務器端應該接近你已經做的事情。 – Moose 2008-11-12 22:35:35