Perl 验证码在 Windows 7 上不刷新

发布于 2024-09-03 20:24:23 字数 279 浏览 2 评论 0原文

我创建了一个如下所示的验证码:

<img src="/cgi-bin/rand.pl" />

问题是,如果有人导航离开或返回带有验证码的页面,它不会刷新,这会使验证码无效(特别是如果他们之前已经提交过表单) )是否有强制刷新的方法,因为我怀疑使用 javascript 设置图像源也不会强制刷新。图像真正刷新的唯一时间是使用浏览器上的刷新按钮。 (这在 IE8/7、Windows XP 上的 Mozilla 中不是问题;我只是在 Windows 7 上注意到它)

I have created a captcha which looks like this:

<img src="/cgi-bin/rand.pl" />

The problem is that if someone navigates away from or back to the page with the captcha on it, it doesn't refresh which makes the captcha invalid (especially if they have already submitted the form before) Is there anyway to force a refresh as I suspect setting the image source with javascript wouldn't force a refresh either. The only time the image actually is refreshing is if the refresh button on the browser is used. (this isn't a problem in IE8/7,mozilla on windows XP; I just noticed it on windows 7)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

怀念你的温柔 2024-09-10 20:24:23

使用当前或过去的 HTTP 日期时间设置 Expires 标头标记以表明该资源不得被缓存。使用 CGI 模块的示例:

use CGI qw();
my $cgi = CGI->new;
print $cgi->header(
    -type    => 'image/png',
    -expires => '+0s',
);

__END__
Expires: Wed, 02 Jun 2010 12:13:47 GMT
Date: Wed, 02 Jun 2010 12:13:47 GMT
Content-Type: image/png

要自行创建符合标准的日期时间戳,请使用 HTTP::DateDateTime::Format::HTTP.

Set the Expires header with the current or a past HTTP datetime stamp to signal that the resource must not be cached. Example using the CGI module:

use CGI qw();
my $cgi = CGI->new;
print $cgi->header(
    -type    => 'image/png',
    -expires => '+0s',
);

__END__
Expires: Wed, 02 Jun 2010 12:13:47 GMT
Date: Wed, 02 Jun 2010 12:13:47 GMT
Content-Type: image/png

To create a standard-conforming datetime stamp on your own, use HTTP::Date or DateTime::Format::HTTP.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文