我目前正在向我的网站 (.net) 添加一个 aspx 页面,我的客户可以在其中插入信用卡详细信息。我想只允许从几个页面访问该页面(我们称它们为 a.aspx 和 b.aspx),如果有人试图从 c.aspx 访问该页面,他将无法这样做。有没有办法将重定向限制为仅几页的页面?
我试图用“发送者”对象检查页面事件的调用来源是什么,但是我不确定它是正确的方法。
希望问题足够清楚。
是的 - 看看HttpWebRequest.Referer属性。
使用它,您可以查看对 c.aspx 的请求是从哪个页面发出的 - 如果它不是 a.aspx 或 b.aspx,您可以将用户重定向。
要做到这一点,您需要知道的是referer。简而言之,引用者是将您带到您当前所在页面的页面。
我相信这应该得到 ASP.net 的推荐人
Request.Server["HTTP_REFERER"]
然后您可以检查并查看引荐来源是否与您想要的来源相匹配。但是,我不确定引用者欺骗的难易程度/普遍性,或者它是否存在。
如前所述,您需要检查当前的 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