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