1

我目前正在向我的网站 (.net) 添加一个 aspx 页面,我的客户可以在其中插入信用卡详细信息。我想只允许从几个页面访问该页面(我们称它们为 a.aspx 和 b.aspx),如果有人试图从 c.aspx 访问该页面,他将无法这样做。有没有办法将重定向限制为仅几页的页面?

我试图用“发送者”对象检查页面事件的调用来源是什么,但是我不确定它是正确的方法。

希望问题足够清楚。

4

3 回答 3

2

是的 - 看看HttpWebRequest.Referer属性。

使用它,您可以查看对 c.aspx 的请求是从哪个页面发出的 - 如果它不是 a.aspx 或 b.aspx,您可以将用户重定向。

于 2013-01-15T11:45:16.193 回答
2

要做到这一点,您需要知道的是referer。简而言之,引用者是将您带到您当前所在页面的页面。

我相信这应该得到 ASP.net 的推荐人

Request.Server["HTTP_REFERER"]

然后您可以检查并查看引荐来源是否与您想要的来源相匹配。但是,我不确定引用者欺骗的难易程度/普遍性,或者它是否存在。

于 2013-01-15T11:45:56.317 回答
0

如前所述,您需要检查当前的 UrlReferrer,这是 vb.net 中的示例

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
    Dim bRedirect As Boolean = True
    Try
        If Not IsNothing(Page.Request.UrlReferrer) Then
            Dim sReferer As String = Page.Request.UrlReferrer.ToString()
            If sReferer.Contains("/a.aspx") Or sReferer.Contains("/b.aspx") Then
                bRedirect = False
            End If
    Catch ex As Exception
        ' Raise exception, decide whether or not to redirect
    End Try
    If bRedirect Then
        Response.Redirect("~/x.aspx", True)
    End If
End Sub
于 2013-01-15T11:59:52.343 回答