gpt4 book ai didi

perl - CGI 为 403 返回 OK

转载 作者:行者123 更新时间:2023-12-05 07:59:40 24 4
gpt4 key购买 nike

我编写了一个简单的脚本来提供自定义 HTTP 错误 403 页面,并使用以下代码:

use CGI qw/:standard/;

print header(
'-Status' => 403,
'-Type' => 'text/html; charset=utf-8',
'-Cache-Control' => 'private, no-cache, no-store, must-revalidate, max-age=0',
'-Pragma' => 'no-cache');

...

print $html;

我希望系统在 HTTP header 中自动返回 Forbidden 状态文本。

不幸的是,它返回 403 OK 而不是 403 Forbidden。文本短语更有可能由浏览器添加。

当然,我可以使用 '-Status' => '403 Forbidden' 显式添加状态文本,但我仍然想知道为什么这不是自动完成的,为什么我是取而代之的是 OK 状态...

有没有办法强制 Perl 为选定的响应代码添加默认(英语)状态文本?

最佳答案

Chrome 是这里的罪魁祸首。您可以通过在命令行上运行您的代码段来验证,它会输出以下 header :

Status: 403
Pragma: no-cache
Cache-control: private, no-cache, no-store, must-revalidate, max-age=0
Content-Type: text/html; charset=utf-8

注意状态是普通的 403

CGI.pm 不知道 reason phrases recommended by the HTTP spec .也不应该:它们只是建议(不是默认值),您可以在不影响协议(protocol)的情况下将它们更改为任何您想要的(403 Go away anyone?)。根据标准,客户甚至不需要查看原因短语。

所以不,除非你修改 CGI.pm,否则没有办法强制 Perl 添加一个原因短语。即使您确实提供了一个原因短语,浏览器也可以用它们做他们想做的事(尽管大多数浏览器可能会表现得很好)。

关于perl - CGI 为 403 返回 OK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20892038/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com