标签: http-headers

如何根据请求 URI 使用 HAproxy 1.6 添加响应标头?

我在 tomcat 服务器前使用 HAproxy 1.6 作为负载平衡器。

我需要根据请求 URI 添加响应标头。

例如,Cache-Control public,max-age="600"当请求 uri 是/api但不是当请求 uri 是其他东西时,我想添加响应头。

  • 我的第一次尝试是使用基于路径的 acl 将标头添加到 http-response:

    acl api path_reg ^/api/(.*)$
    http-response add-header Cache-Control public,max-age="600" if api
    
    Run Code Online (Sandbox Code Playgroud)

    当我用 开始haproxy 时-d,我有警告说path_reg(或path)与http-response以下不兼容:

    Dec  6 15:22:29 ip-10-30-0-196 haproxy-systemd-wrapper[315]: 
    [WARNING] 340/152229 (2035) : parsing 
    [/etc/haproxy/haproxy.cfg:78] : acl 'api' will never match because 
    it only involves keywords that are incompatible with 'backend 
    http-response header rule'
    
    Run Code Online (Sandbox Code Playgroud)
  • 我试图添加标题http-request而不是http-response

    acl …
    Run Code Online (Sandbox Code Playgroud)

cache http-headers haproxy

11
推荐指数
1
解决办法
1万
查看次数

Amazon S3 不发送 Content-Type 标头

我有一个从各种来源下载内容的应用程序。它依赖于在图像上设置的“Content-Type”标头。大多数网络服务器都正确执行此操作,但似乎 Amazon S3 服务器未设置 Content-Type。

我假设亚马逊服务器配置正确,那么可能是什么问题?这些图片没有正确上传吗?或者我不应该依赖设置的内容类型?

例子

谢谢

amazon-s3 images http-headers

10
推荐指数
2
解决办法
7913
查看次数

发送内容(消息正文)以及 304 Not Modified 标头

对于静态 html 页面,当来自服务器的响应头是304 Not Modified 时,服务器是否有责任只发送头而不是消息正文(html 内容)?

发送304 Not Modified如果它也与 html 内容一起出现有什么意义?

http-headers

10
推荐指数
1
解决办法
5839
查看次数

Apache 重定向并设置缓存标头?

在 Apache 中进行重定向很容易 (mod_alias):

RedirectMatch ^.*$ http://portal.example.com/
Run Code Online (Sandbox Code Playgroud)

设置缓存标头同样简单:

Header set Cache-Control max-age=0
Header set Expires "Thu, 01 Dec 1994 16:00:00 GMT"
Run Code Online (Sandbox Code Playgroud)

(我不想缓存这个)

但!好像不能把两者结合起来。此配置导致发送重定向,但不发送标头:

<VirtualHost *:80>
        ServerName __default__
        Header set Cache-Control max-age=0
        Header set Expires "Thu, 01 Dec 1994 16:00:00 GMT"
        RedirectMatch ^.*$ http://portal.example.com/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

实际发生的例子:

jb@apto % telnet 192.168.0.1 80
Trying 192.168.0.1...
Connected to redirector.example.com.
Escape character is '^]'.
GET / HTTP/1.1
Host: foo

HTTP/1.1 302 Found
Date: Sat, 21 Aug 2010 09:36:38 GMT
Server: Apache/2.2.9 (Debian) Phusion_Passenger/2.2.9
Location: http://portal.example.com/ …
Run Code Online (Sandbox Code Playgroud)

configuration cache redirect http-headers apache-2.2

10
推荐指数
1
解决办法
1万
查看次数

如何向 apache 和 nginx 服务的所有 404 页面添加无缓存标头?

我最近在切换到 Cloudflare 后遇到了一个问题,解决方案是基本上阻止 Cloudflare 缓存 404 响应。

在我们的负载平衡多服务器设置中,偶尔会发生 404,但它们会被 rsync(通过 lsyncd)快速修复。在 Cloudflare 之前,对 404ed 文件的重新请求将很快变为 200,因为 rsync 完成其工作。

但是,由于 Cloudflare 根据缓存标头缓存所有数据,并且 apache 和 nginx 都不会发送 404 的 no-cache 标头,因此 Cloudflare 最终会缓存 404 响应一段时间。

我一直在寻找一种解决方案,以在 apache 和 nginx(全球范围内,对于所有托管域)中为 404s 全局添加此类标头,但到目前为止还没有找到。

任何人都可以帮忙吗?

谢谢你。

nginx cache http-headers http-status-code-404 apache-2.2

10
推荐指数
3
解决办法
1万
查看次数

如何在 apache 中为文件发送 Content-Disposition 标头?

我有一个使用 apache 2 提供的文本文件目录。通常,当我(或任何用户)访问文件时,他们会在浏览器中看到它们。我想“强制”* Web 浏览器弹出“另存为”对话框。我知道这可能与Content-Disposition标题有关(更多信息)。

有没有办法为每个文件打开它?

理想情况下,我想要这样的东西:

<Directory textfiles>
   AutoAddContentDispositionHeaders On
</Directory>
Run Code Online (Sandbox Code Playgroud)

然后 apache 将设置正确的内容处置标头,包括使用相同的文件名。

使用 apacheHeader指令可能会发生这样的事情。

如果通过在 debian 中站在 apache 中包含它,则奖励积分。

我可以做一个简单的 PHP 包装器脚本,它接受一个filename参数,调用header(...)然后打印文件,但是我必须验证输入等。这是我试图避免的工作。


* 我知道当涉及到网络时,您实际上不能强迫事物

http http-headers apache-2.2

9
推荐指数
1
解决办法
2万
查看次数

.htaccess 无法正确重定向到以 www 为前缀的页面

我正在尝试重定向没有 www 的 url。到 www.version(example.com 到 www.example.com)。我用通常的

RewriteCond %{HTTP_HOST} ^example\.com [nc]
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)

这适用于我所有的其他项目。但是,在这个特定站点上,它以重定向循环结束。这是奇怪的部分:我试图卷曲非 www 版本以查看它使用 curl --get http://example.com --dump-header domain.header > domain.html. 头文件如下所示:

HTTP/1.1 301 Moved Permanently
Date: Mon, 06 Jun 2011 14:45:16 GMT
Server: Apache/2.2.16 (Debian)
Location: http://example.com/
Vary: Accept-Encoding
Content-Length: 310
Content-Type: text/html; charset=iso-8859-1
Run Code Online (Sandbox Code Playgroud)

但是,生成的 HTML 文件是这样的:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://www.example.com/">here</a>.</p>
<hr>
<address>Apache/2.2.16 (Debian) Server at example.com Port 80</address> …
Run Code Online (Sandbox Code Playgroud)

php mod-rewrite .htaccess http-headers apache-2.2

9
推荐指数
1
解决办法
1838
查看次数

当文件是 PHP 时 mod_headers 不发送标头

我的 .htaccess 文件设置如下:

 Header set MyHeader "I'm Set!"
Run Code Online (Sandbox Code Playgroud)

如果我转到http://example.com/test/没有默认索引文件的目录 ( ) 并查看网络活动(在这种情况下使用 Chrome),我可以看到正在发送标头。如果我转到 php 文件 ( http://example.com/test/test.php),则不会发送标头。

我创建了一个 index.html(仅<pre>Hi作为内容)并被发送。我将文件名更改为.php,没有标题。如果我将原始文件更改test.phptest.html,它会输出看起来很垃圾的代码,并发送标头。如果我更改test.phptest.png,我会得到一个损坏的图像图标,并发送标题。

因此,如果没有在 mime 类型和文件扩展名方面进行上述测试,那么似乎只有.php文件(合法或其他)被设置为不适用 .htaccess 规则或特别是 mod_headers 指令。但我不知道如何对此进行测试,而且因为它是一个共享服务器,所以我无权httpd.conf四处闲逛。

关于为什么 apache 会跳过为 php 文件发送标头的任何想法?

我也试过:

 <FilesMatch "\.(php)$">
     Header set MyHeader "I'm Set!"
 </FilesMatch>
Run Code Online (Sandbox Code Playgroud)

php http-headers apache-2.2

9
推荐指数
1
解决办法
5432
查看次数

使用通配符域在 nginx 中设置 Access-Control-Allow-Origin

随着nginx我可以指定Access-Control-Allow-Origin使用像一个通配符*.mydomain.com

它看起来像:

add_header Access-Control-Allow-Origin *.mydomain.com;
Run Code Online (Sandbox Code Playgroud)

谢谢。

security nginx http-headers

9
推荐指数
3
解决办法
2万
查看次数

如果我发送 HTTP GET 请求,我会在 GET 中收到响应吗?

这可能是一个非常基本的问题,所以请原谅我的无知

服务器使用哪种方法来响应它收到的请求?

我正在制作一个网络应用程序,并且有一个特定的路线返回一个大的(比如 .iso 图像)文件。因此,当用户单击下载按钮时,我让 JavaScript 请求带有{method: "GET"}.

当下载在用户机器上开始时,服务器使用哪种 HTTP 方法发送文件?

我真的很困惑:

  • 服务器上传用户下载是如何处理的?
  • 对于大文件,它是否默认为 POST?
  • 作为程序员,我如何确保最终用户可以轻松下载(可恢复)?

http http-headers http-method

8
推荐指数
1
解决办法
2万
查看次数