如何得知当前网页的调用是从哪个网页转过来的!(网页之间传递参数的问题)!高手们看过来!

brightzh 2003-04-25 10:00:31
我使用get方法在网页之间传递参数。
因为这个参数比较敏感,希望用户不能修改。所以在弹出的窗口中我去掉address栏,使用户不能修改地址栏,但是还有一种情况就是用户直接在浏览器里面打入相应的地址,不知道该如何防范这种操作,初步的设想是获知该网页的调用是从哪个页面导航过来的,从而判断数据的有效性。

或者各位高手有什么其他的方法赐教!
...全文
380 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
erigido 2003-05-30
  • 打赏
  • 举报
回复
收藏
zuohaijun 2003-04-25
  • 打赏
  • 举报
回复
直接用session传不同的变量
这个方法是笨了点,但可以实现。
brightzh 2003-04-25
  • 打赏
  • 举报
回复
To qingren(qingren)
关于隐藏参数能不能举个例子说明一下!

To comy(泥娃)
如果我不用HttpServerUtility.Transfer来做页面间的导航。我是否能够根据你的方法传递参数呢。因为我现在是用JavaScript:window.open方法的!
brightzh 2003-04-25
  • 打赏
  • 举报
回复
Request.ServerVariables["HTTP_REFERER"];
得值为null.
我是从javaScript里面写代码,打开window.
blackant2 2003-04-25
  • 打赏
  • 举报
回复
HttpRequest 概述

公共属性
AcceptTypes 获取客户端支持的 MIME 接受类型的字符串数组。
ApplicationPath 获取服务器上 ASP.NET 应用程序的虚拟应用程序根路径。
Browser 获取有关正在请求的客户端的浏览器功能的信息。
ClientCertificate 获取当前请求的客户端安全证书。
ContentEncoding 获取实体主体的字符集。
ContentLength 指定客户端发送的内容长度(以字节计)。
ContentType 获取传入请求的 MIME 内容类型。
Cookies 获取客户端发送的 cookie 的集合。
CurrentExecutionFilePath 获取当前请求的虚拟路径。
FilePath 获取当前请求的虚拟路径。
Files 获取客户端上载的文件(多部件 MIME 格式)集合。
Filter 获取或设置在读取当前输入流时要使用的筛选器。
Form 获取窗体变量集合。
Headers 获取 HTTP 头集合。
HttpMethod 获取客户端使用的 HTTP 数据传输方法(如 GET、POST 或 HEAD)。
InputStream 获取传入的 HTTP 实体主体的内容。
IsAuthenticated 获取一个值,该值指示是否验证了用户。
IsSecureConnection 获取一个值,该值指示 HTTP 连接是否使用安全套接字(即 HTTPS)。
Params 获取 QueryString、Form、ServerVariables 和 Cookies 项的组合集合。
Path 获取当前请求的虚拟路径。
PathInfo 获取具有 URL 扩展名的资源的附加路径信息。
PhysicalApplicationPath 获取当前正在执行的服务器应用程序的根目录的物理文件系统路径。
PhysicalPath 获取与请求的 URL 相对应的物理文件系统路径。
QueryString 获取 HTTP 查询字符串变量集合。
RawUrl 获取当前请求的原始 URL。
RequestType 获取或设置客户端使用的 HTTP 数据传输方法(GET 或 POST)。
ServerVariables 获取 Web 服务器变量的集合。
TotalBytes 获取当前输入流中的字节数。
Url 获取有关当前请求的 URL 的信息。
------------------------------------------------------------
UrlReferrer 获取有关客户端上次请求的 URL 的信息,该请求链接到当前的 URL。
-------------------------------------------------------------
UserAgent 获取客户端浏览器的原始用户代理信息。
UserHostAddress 获取远程客户端的 IP 主机地址。
UserHostName 获取远程客户端的 DNS 名称。
UserLanguages 获取客户端语言首选项的排序字符串数组。
wxyzy 2003-04-25
  • 打赏
  • 举报
回复
Request.ServerVariables["HTTP_REFERER"];判断是从那个页导航过来的
页面件传递参数可以用Server.Transfer('second.apsx')

或 用 session("id")=1
在 其 他 网 页 上 判 断 这 个 直 是 否 为 1!
comy 2003-04-25
  • 打赏
  • 举报
回复
Request.ServerVariables["HTTP_REFERER"];判断是从那个页导航过来的
页面件传递参数可以用Server.Transfer('second.apsx')

创建将值发送到另一个 Web 窗体页的 Web 窗体页

通过在 Web 窗体页的顶部添加 @Page 指令并将 ClassName 属性设置为有效的类名来为源 Web 窗体页指定类名。
[Visual Basic]
<%@ Page Language="VB" ClassName="MyClassName" %>
[C#]
<%@ Page Language="C#" ClassName="MyClassName" %>
在该类中为要传递到另一个 Web 窗体页的每个值都定义一个具有 get 访问器的属性。get 访问器应只返回您要传递的值(例如 Web 窗体页上文本框的值)。必须在服务器端脚本中定义这些属性。
[Visual Basic]
<script runat="server">
Public ReadOnly Property FirstName() As String
Get
' FirstNameTextBox is the name of a TextBox control.
Return FirstNameTextBox.Text
End Get
End Property
</script>
[C#]
<script runat="server">
public string FirstName
{
get
{
// FirstNameTextBox is the name of a TextBox control.
return FirstNameTextBox.Text;
}
}
</script>
当要将信息传递到另一个 Web 窗体页时(例如当单击了按钮时),使用 HttpServerUtility.Transfer 方法结束在当前页的执行并将应用程序的控制传输到另一个 Web 窗体页。HttpServerUtility.Transfer 方法采用单个参数,该参数允许您指定要将控制传输到的 Web 窗体页的 URL。
[Visual Basic]
Sub SubmitButtonClick(sender As Object, e As EventArgs)
Server.Transfer("secondpage.aspx")
End Sub
[C#]
void SubmitButtonClick(object sender, EventArgs e)
{
Server.Transfer("secondpage.aspx");
}
下面是一个完整的示例,显示如何使用内联代码创建 Web 窗体页以将两个 TextBox 控件的值传递到另一个 Web 窗体页。该示例的名称必须是 firstpage.aspx。

[Visual Basic]
<%@ Page Language="VB" ClassName="FirstPageClass" %>

<html>
<head>

<script runat="server">
Public ReadOnly Property FirstName() As String
Get
' first is the name of a TextBox control.
Return first.Text
End Get
End Property

Public ReadOnly Property LastName() As String
Get
' last is the name of a TextBox control.
Return last.Text
End Get
End Property

Sub ButtonClicked(sender As Object, e As EventArgs)
Server.Transfer("secondpage.aspx")
End Sub

</script>

</head>

<body>

<form runat="server">
First Name:
<asp:TextBox id="first"
runat="server"/>
<br>
Last Name:
<asp:TextBox id="last"
runat="server"/>
<br>
<asp:Button
OnClick="ButtonClicked"
Text="Go to second page"
runat=server />
</form>

</body>

</html>
[C#]
<%@ Page Language="C#" ClassName="FirstPageClass" %>

<html>
<head>

<script runat="server">

public string FirstName
{
get
{
return first.Text;
}
}

public string LastName
{
get
{
return last.Text;
}
}

void ButtonClicked(object sender, EventArgs e)
{
Server.Transfer("secondpage.aspx");
}

</script>

</head>

<body>

<form runat="server">
First Name:
<asp:TextBox id="first"
runat="server"/>
<br>
Last Name:
<asp:TextBox id="last"
runat="server"/>
<br>
<asp:Button
OnClick="ButtonClicked"
Text="Go to second page"
runat=server />
</form>

</body>

</html>
创建从另一个 Web 窗体页接收值的 Web 窗体页

在接收信息的 Web 窗体页上,在页的顶部添加 @Reference 指令并将 Page 属性设置为源 Web 窗体页(包含您要传递信息的 Web 窗体页)。
<%@ Reference Page="firstpage.aspx" %>
在服务器端脚本中声明一个变量,以存储在发送信息的 Web 窗体页中定义的类的实例。
[Visual Basic]
<script runat="server">
Dim fp As FirstPageClass
</script>
[C#]
<script runat="server">
FirstPageClass fp;
</script>
创建一个自定义 Page_Load 事件处理程序,当 Web 窗体页不回发到其本身时,该处理程序将当前 HTTP 请求的 IHttpHandler 实现的对象分配给上一步中声明的变量。使用 IsPostBack 属性可确定是否将该页回发到其本身。IHttpHandler 实现的对象包含首先接收 HTTP 请求的处理程序的实例。因为 IHttpHandler 实现的对象与上一步声明的变量属于不同的对象类型,所以必须首先将它转换为封装从第一个 Web 窗体页发送的信息的类,然后才可以将它指派给该变量。使用 Context 对象的 Handler 属性来检索处理程序对象。
[Visual Basic]
<script runat="server">
Sub Page_Load()
If Not IsPostBack Then
fp = CType(Context.Handler, FirstPageClass)
End If
End Sub
</script>
[C#]
<script runat="server">
void Page_Load()
{
if (!IsPostBack)
{
fp = (FirstPageClass)Context.Handler;
}
}
</script>
第二步中声明的变量现在包含封装上一个 Web 窗体页中信息的类的实例。使用该变量访问类(该类包含从上一个 Web 窗体页发送的信息)的属性。可以通过编程方式访问这些值以执行计算,或者只是使用脚本分隔符 <%= 和 %> 来显示它们。
Hello <%=fp.FirstName%>
下面显示一个完整的 Web 窗体页,该页从另一个 Web 窗体页接收两个值。然后,这些值显示在 Web 窗体页上。您必须将该示例叫做 secondpage.aspx。

[Visual Basic]
<%@ Page Language="VB" %>
<%@ Reference Page="firstpage.aspx" %>

<html>

<head>

<script runat="server">

Dim fp As FirstPageClass

Sub Page_Load()
If Not IsPostBack Then
fp = CType(Context.Handler, FirstPageClass)
End If
End Sub

</script>

</head>

<body>

<form runat="server">

Hello <%=fp.FirstName%> <%=fp.LastName%>

</form>

</body>

</html>
[C#]
<%@ Page Language="C#" %>
<%@ Reference Page="firstpage.aspx" %>

<html>

<head>

<script runat="server">

FirstPageClass fp;

void Page_Load()
{
if (!IsPostBack)
{
fp = (FirstPageClass)Context.Handler;
}
}

</script>

</head>

<body>

<form runat="server">

Hello <%=fp.FirstName%> <%=fp.LastName%>

</form>

</body>
</html>

qingren 2003-04-25
  • 打赏
  • 举报
回复
在你的参数上加一个隐藏参数,
进入页面后,先判断是否有这个参数,有,则运行,没有,则不运行
如果,用户直接打入相应的地址,是没有隐藏参数的

隐藏参数:用一个类的属性保存,当你设置get方法前,清空;设置后,赋值.
jb2008 2003-04-25
  • 打赏
  • 举报
回复
Request.UrlReferrer.AbsolutePath
wangcl 2003-04-25
  • 打赏
  • 举报
回复
还用写这么多啊,用js! document.referrer

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧