我可以设置“HTML”吗?我的 Apache Web 服务器提供的 PDF 文件的标题

发布于 2024-11-01 00:58:14 字数 204 浏览 1 评论 0原文

我的 HTML 页面包含 ;带有指向 PDF 文件的 href 的标签。我的 Apache Web 服务器可以很好地为它们提供服务,但标题(如浏览器历史记录中所示)是文件名。我希望能够设置该标题。

也许有一个可以设置的标题?

我不想编写一个脚本来提供文件,因为服务器可以处理内容编码协商(例如,对于 gzip),并进行流量控制,我不想重新创建这些。

I have HTML pages that contain <a> tags with hrefs that point to PDF files. My Apache Web server serves them just fine, but the title, as shown in the Browser history, is of the file name. I would like to be able to set that title.

Perhaps there's a Header than can be set?

I don't want to write a script to serve the files as the server can handle Content-Encoding negotiation (e.g., for gzip), and do flow control, none of such do I want to re-create.

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

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

发布评论

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

评论(3

没有伤那来痛 2024-11-08 00:58:14

这是您可以设置的 http 标头。

Content-Disposition:inline; filename="*File name you want*";

Here is an http header you can set.

Content-Disposition:inline; filename="*File name you want*";
夜吻♂芭芘 2024-11-08 00:58:14

我创建了一个 PHP-Skript(例如 download.php,文件名无关紧要),如下所示:

<?php
header("Content-Type: application/pdf");
header('Content-Disposition: inline; filename="'.addslashes($_REQUEST['title']).'"'); //filename doesn't set the browser title here, only when page is saved/downloaded
$content = file_get_contents($_REQUEST['filename']);
header('Content-Length: '.strlen($content));
echo $content;

在我的设置(Windows 10;Apache 2.4.37;PHP 7.1.25)中,您现在可以执行如下请求:
http://.../download.php/browser_title?filename=test.pdf

我在 Chrome 和 Firefox 中成功测试了这一点。
Internet Explorer 无法显示内联 PDF 文档:-/。
Microsoft Edge 还在标题栏中包含了 URL 参数:-(。

I created a PHP-Skript (e.g. download.php, filename doesn't matter) like this:

<?php
header("Content-Type: application/pdf");
header('Content-Disposition: inline; filename="'.addslashes($_REQUEST['title']).'"'); //filename doesn't set the browser title here, only when page is saved/downloaded
$content = file_get_contents($_REQUEST['filename']);
header('Content-Length: '.strlen($content));
echo $content;

In my setup (Windows 10; Apache 2.4.37; PHP 7.1.25) you can now do a request like this:
http://..../download.php/browser_title?filename=test.pdf

I tested this successfully in Chrome and Firefox.
Internet Explorer was not able to display a PDF-Document inline :-/.
Microsoft Edge also included the URL-Parameter in the title bar :-(.

給妳壹絲溫柔 2024-11-08 00:58:14

我怀疑您遇到的问题是客户端浏览器将文件名存储在历史记录中,这是您无法修复的。

最后我检查了一下,历史记录中的标题来自 HTML 页面的设置(而不是标头),因此标题应该没有 HTTP 标头字段。

我不是 HTTP 专家,也不了解所有字段,但我不记得我曾经使用过的任何服务器中有一个设置来设置页面的标题(只是状态代码、协议等)

I suspect the issue you are having is that the client browser is storing the file name in the history, which you cannot fix.

Last I checked, the title in the history came from the setting of the HTML page (not a header), so there should be no HTTP header field for the title.

I am no HTTP expert and do not know all the fields, but I do not remember there being a setting in any server that I have ever worked with to set the page's title (just the status code, protocol, etc.)

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