ASP.NET中的重定向问题

时间:2011-01-01 20:19:36

标签: asp.net

我有一个关于在ASP.NET中重定向的问题。我知道如何在其他ASP.NET页面上使用Redirect功能重定向并从Request中读取URL中的参数,但我不想要GET,我需要POST,我通过URL发送ID,因此用户不需要看到。如何使用POST方法重定向并在ASP.NET中读取参数?

4 个答案:

答案 0 :(得分:3)

根据定义,重定向是GET,您不能使用POST进行301或302重定向。如果您试图阻止用户查看值,则可以将该值存储在会话中,然后在重定向后检索它。虽然我过去发现,试图通过不允许用户看到它来保护某些东西不是最好的方法(通过默默无闻的安全性)。您应该采取其他措施来保护用户不要做他们不应该做的事情,即使他们知道价值。

即使我错了并且您可以使用POST重定向,那么该值也需要成为重定向的一部分,因此如果用户正在使用某些内容,则用户确实有机会了解它监控HTTP流量。

答案 1 :(得分:3)

使用重定向无法发出POST请求。通过在重定向页面中使用Javascript是可能的,但这会使它不如常规重定向强大。

考虑Server.Transfer是否符合您的目的。它不会更改浏览器中页面的URL,但它会使您在查询字符串中发送的数据保持离开服务器。

答案 2 :(得分:1)

您还有其他几种方法,其中一种方法是在会话中存储值。 另请查看:Cross-Page-Posting

答案 3 :(得分:0)

您必须使用会话在两个页面之间传输变量。 如果您有多个参数,请考虑具有这些参数的类。你可以在Session中保留一个对象。因此,在第二页中,检查特定会话是否包含特定对象。否则,不指定参数。

在第一页中,您可以将对象保存在Session中。

Session["yourSessionName"]=new Class1()
                               {
                                 variable1=...
                                 variable2=...
                               };

然后

Response.Redirect("/yourSecoundPage.apsx");

在第二页中,您可以像这样查看

    if (Session["yourSessionName"] is Class1)
    { 
         //Accept parameters 
    }
    else
         // Parameters not specified