2015-06-05 50 views
1

好的。從哪裏開始....表單數據在使用URL重寫時不會發帖

我有一個網站。它使用傳統的asp在IIS服務器上運行。我在那個網站上有表格。

表單工作正常,直到我決定添加一些URL重寫規則到我的web.config文件來重定向漂亮的網址。 完成之後,我的網站上的表單不會發布數據。它將轉到正確的地址,但是沒有任何內容傳遞到假定要執行處理的頁面。在我正在處理的頁面上,如果我這樣做:

For each FieldName in Request.Form 
Response.write FieldName & " = " & Request.Form(FieldName) & "<br>" 
Next 

我絕對沒有得到任何東西。沒有表單字段名稱或值。

我需要添加到web.config文件以便數據發佈?而且......更重要的是......我需要在我的web.config文件中添加它在哪裏?

這裏是我的web.config文件的文本拷貝http://elvis-is-alive.com/webconfig.txt

+0

順便說一句....這裏是一個鏈接形式http://elvis-is-alive.com/sign-guestbook我發佈鏈接,而不是代碼,所以你可以看到整個事情。 – Soren

回答

2

你的web.config中包含action=redirect

重定向始終會將重定向標頭髮送到瀏覽器。這會更改瀏覽器地址欄中的URL,然後瀏覽器爲新地址發出HTTP GET。使用HTTP GET,不會發送任何表單/發佈數據;假定所有參數都在URL查詢字符串中。

如果您想避免重定向並使用真正的重寫,請將web.config更改爲使用action=rewrite。使用此方法,不會將重定向標頭髮送回瀏覽器,瀏覽器地址欄也不會更改,並且IIS只是將當前請求流重定向到其他位置。

東西告訴我,這不是你想要的 - 你希望瀏覽器中的地址欄發生變化,並且希望保留表單/發佈數據。這是不可能的,除非你做非常不尋常的事情,例如通過指向新網址的操作呈現包含原始表單/發佈請求的臨時插頁式網頁。我不建議這樣做。

爲什麼不只是在原始頁面的HTML中更改表單動作?

+0

謝謝!改變前兩條規則(我沒有注意到是重定向而不是重寫)的伎倆。 – Soren