javascript - 如何在 Perl CGI 程序中链接到上一个网页?

标签 javascript html perl

我有一个网格,其中有一个到下一页的链接,并且我有一个按钮可以从当前页面导航回网格。到目前为止,我一直在使用这种方法向后导航,即

     <INPUT TYPE="BUTTON" VALUE="Back to Datagrid" onClick="history.go(-1);">

但是当我遇到其他一些限制时,我在导航时遇到了一些问题,所以我发现了类似的内容:

    $exit = $ENV{'HTTP_REFERER'};
    <INPUT TYPE="BUTTON" VALUE="Back to Datagrid" onClick="$exit">

但是它不起作用。我不知道为什么,这两种方法有什么区别?

最佳答案

第一种方法尝试复制后退按钮的功能。

第二种方法采用浏览器声明的上一页的 URI,将其放入页面中而不对其进行清理,并尝试运行该 URI,就好像它是 JavaScript 一样。这会立即出错,因为 URI 很少是有效的 JavaScript。

更好的方法是计算出您想要访问的 URI(大概基于您用于构建当前页面的数据)并创建一个正常的前向链接( <a href... )到它......并且如果用户想返回,请让他们使用浏览器中内置的后退按钮。这种方法:

  • 如果 JS 不可用,也不会失败
  • 如果浏览器不发送可选的 HTTP header ,则不会失败
  • 不会让用户的浏览器历史记录以意想不到的方式运行,从而使用户感到困惑

我不确定,但我怀疑有人可能会制作一个 URI 并将其链接到您的页面,包括 "<script>...在里面。然后,用户可以单击该链接,获取插入到该页面中的页面的 URI,并向您介绍 XSS 攻击。 (我认为这应该会失败,因为其中一些字符应该是 URI 编码的,但我不想冒这个风险 - 每当您有来自系统外部并返回到页面的数据时,请始终放入针对 XSS 的标准保护措施)

关于javascript - 如何在 Perl CGI 程序中链接到上一个网页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3869822/

相关文章:

javascript - jsonloader 纹理未加载

javascript - 将 Vue 对象附加到元素的最推荐语法是什么?

html - 摆好我的 table

perl - 替换换行符和后面的空格,直到文件中的特定字符串

arrays - 在 Perl 中,是否有内置方法来比较两个数组是否相等?

javascript - 单击子元素时,向同级元素添加属性

javascript - 根据 URL 或 URL 字符串前缀不同的 html、body 背景

python - 从 Flask 生成(内联 CSS)HTML 模板不起作用

html - Div智能宽度

arrays - 如何在 perl 中将数组 [key1,val1] 映射到哈希 { key1 => val1}?