在asp.net页面和弹出页面之间发送数据?

时间:2008-12-29 15:06:16

标签: asp.net .net-2.0 asp.net-2.0

asp.net页面和弹出页面之间有什么不同的通信方式?查询字符串等哪个最安全?

5 个答案:

答案 0 :(得分:1)

如果你在谈论一个实际的弹出页面,你在javascript中使用window.open。您可以使用查询字符串和Javascript作为在两者之间传递信息的唯一真实可用选项。

至于这个“安全”。用户可以通过查询字符串查看任何内容,JavaScript可以移动值,但它们将存在于另一页上。但是你可以传递一些类似于被删除的值来使事情变得更加安全。

答案 1 :(得分:1)

您说弹出窗口和主ASP.NET页面之间的“通信”。首先,我假设弹出窗口也是一个ASP.NET页面,因此从主页面到弹出窗口的通信与一系列页面中从一个页面到下一个页面的通信没有什么不同。也就是说,您可以在会话中存储然后使用数据(如果数据在加载主页时可用),通过查询字符串等。除非数据是敏感的,否则最简单的方法是在对弹出窗口的调用由适当的参数替换。这是一个示例图像链接:

<img style='cursor:hand;' alt="Open Note" onclick="javascript:window.open('NoteEdit.aspx?T=3&UID=<%#NoteUID%>', 'Note', 'HEIGHT=400,WIDTH=420');" src="images/Note.gif" />

请注意“NoteUID”替换参数。

更有趣的问题是如何将信息传递回弹出弹出窗口的窗口。要做到这一点,请从这个javascript开始:

<script type="text/javascript">
    function OpenHRAResults()
    {
        opener.location.href="<%#DestName%>";
        window.close();
    }
</script>

这是从我重新打开特定页面的代码中获取的,但是,正如您所猜测的,您可以使用“开启者”窗口(弹出弹出窗口的窗口)执行各种操作。

希望这会有所帮助......

答案 2 :(得分:0)

一些方法

  • 查询字符串(window.open('/ users / 123'..)
  • Javascript(window.opener)
  • HTTP POST(通过javascript打开弹出窗口,将表单目标设置为目标并发布其名称)
  • 会话或其他服务器端方法

在回答安全考虑时,我会说查询字符串与服务器端安全性相结合是可行的方法。打开通过查询字符串传递信息的弹出窗口,然后验证登录用户是否有权访问该用户。一些特定要求会要求加密查询字符串数据。

对于删除操作,我可能会使用回发来避免“我的索引蜘蛛删除所有用户”等问题。

答案 3 :(得分:0)

我们尽量避免使用查询字符串,有时它们太方便了。在这些情况下,我们总是加密查询字符串。有几种方法可以做到这一点 - 一种方法的例子:

http://www.codeproject.com/kb/web-security/querystringencryptionnet.aspx

答案 4 :(得分:0)

您无需将实际数据发送到弹出窗口。只需在开启者页面上创建一个GUID即可。 在asp.net中创建一个类,它表示您需要在弹出页面和开启者页面之间发送的所有数据。例如popupdata 将序列化类存储在具有GUID的Session中,作为名称Session [Guid] =类对象 Session [Guid] = popupdata;

用f.i打开弹出窗口。 〜/ popupwindow.aspx?PAGEID =的Guid 通过再次调用Session [Guid]来检索会话对象(Guid来自PageID查询字符串。

所以在弹出页面上调用popupdata data =(popupdata)Session [Guid];

然后做任何与数据相关的事情。

如果在弹出窗口中更改了数据,则可以再次将其存储在Session变量中 并把它发回给揭幕战...

非常安全,因为没有数据发送到客户端。