【问题标题】:How to set HTTP-headers with Perl?如何使用 Perl 设置 HTTP 标头?
【发布时间】:2016-03-22 05:16:49
【问题描述】:

我无法在 Perl 中设置标题。

print "Expires: Thu, 08 May 2003 08:37:25 GMT\n\n";
print "Content-Type: text/html; charset=windows-1251\n\n";
print "Vary: Accept-Encoding\n\n";

仅第一个有效。然后我有Content-Type: text/x-perl。怎么了?

【问题讨论】:

  • 我忘记了,HTTP 是否期望标头之间有双 CRLF,还是只有一个?我知道您必须在消息正文之前包含两个。顺便说一句,CRLF 通常是\r\n
  • 如果您使用可以为您完成所有这些工作的模块,则无需了解这些小细节。 :)
  • 两个新行用于将标题与正文分开。所以你的标题在你的第一个新行结束(即在你的第一个标题之后)。

标签: perl http cgi


【解决方案1】:

我假设您使用 CGI 将您的 Web 服务器连接到 Perl。 CGI 使用空行将标头与响应正文分开。自从

print "Expires: Thu, 08 May 2003 08:37:25 GMT\n\n";

Expires: 标头之后打印一个空行,其余的打印语句被视为正文的一部分,而不是标头。你想要的:

print "Expires: Thu, 08 May 2003 08:37:25 GMT\n";
print "Content-Type: text/html; charset=windows-1251\n";
print "Vary: Accept-Encoding\n\n";

【讨论】:

  • 您可能希望删除最后一个标题行的第二个 \n 添加另一行 print "\n"; # finish HTTP header 以避免在将来添加更多标题行时出现这种确切的错误。
猜你喜欢
  • 2021-06-29
  • 2018-12-17
  • 1970-01-01
  • 2017-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多