【问题标题】:Modify http headers on system level (Linux) [closed]在系统级别(Linux)修改http标头[关闭]
【发布时间】:2011-12-27 19:33:53
【问题描述】:

我想不仅在 Firefox 中添加 http 标头(使用“修改标头”插件),还想在系统级别添加。例如,由于我无法在 Skype 的请求或 IDE 中添加标头,因此我需要系统中的一个点来添加此标头。 Linux下可以吗?

附:想要结束问题的“聪明”家伙:你能把你的聪明的cmets吗?

【问题讨论】:

  • 需要更多解释。 “修改http标头”?在第三方页面上的一个特定程序的传入和传出,是什么?
  • 仅传出 http 标头。我用的是firefox插件,但其他所有程序都做不到。
  • 问题毫无意义。您是想在 server 端添加标头还是只为某个系统上的所有客户端进程添加标头?
  • 我在问题中告诉过,我已经使用了 Firefox 插件。这是哪个级别,你怎么看?
  • 为什么你需要知道这个插件?问题不在于他们

标签: linux http ubuntu


【解决方案1】:

您可以将所有传出 HTTP 请求重定向到代理,并让该代理(例如 Squid)添加标头。

将所有请求重定向到 80 端口(即默认 HTTP 端口)可以通过系统范围的 iptables 技巧来完成(但这很恶心)。

【讨论】:

【解决方案2】:

使用代理确实是在系统范围内执行此操作的唯一方法。 Linux 没有 HTTP 标头的概念……它只是用来管理底层套接字。但是,每个客户端程序都需要使用代理。

对于 Squid,使用 request_header_replace 配置指令:

request_header_replace header_name data

【讨论】:

    【解决方案3】:

    我实际上只是遇到了这个问题,但是这个问题没有一个完整的简单答案。很大程度上取决于您要删除哪些标题。有一些标准的 http 协议标头无法在页面呈现时删除,但要为您的一般问题提供一些答案,您应该执行以下操作:

    服务器签名关闭

    ServerTokens 产品

    假设您使用的是 Apache 并且您打开了 mod_headers,则可以在您的 Apache conf 文件、虚拟主机定义或您的 .htaccess 文件中删除其他标头:

    <IfModule mod_headers.c>
    Header unset HEADER_NAME
    </IfModule>
    

    重申一下,很大程度上取决于您要删除哪些标头,因此如果未设置标头不能完全工作,那么如果不修改您的 apache 源或完全了解 mod_perl 就无法删除其中一些标头覆盖标准标题。您也可以尝试使用 php 或您选择的代码来编辑标题,但您也可能会遇到一些问题。

    我希望这会有所帮助,我刚刚经历了这个,所以我希望能帮助解决一些挑战和陷阱,如果可以的话:)

    【讨论】:

    • 我只是想添加标题,不需要删除任何东西
    • 酷,那很简单,在你的 conf、vhost 或 .htaccess 文件中运行:&lt;IfModule mod_headers.c&gt; Header append HEADER_NAME "VALUE" &lt;/IfModule&gt; - 祝你好运
    • 跑到哪里去?我没有使用阿帕奇。只是客户端程序。我想要一个可以向所有传出请求添加标头的单点
    • 将该行放在 httpd.conf 的底部,它应该可以在系统范围内工作。抱歉,我不是说跑,我是说添加这些行 :)
    • @RobertVanSant OP 希望为系统上所有客户端的请求添加标头,而不是 HTTP 服务器的响应。
    猜你喜欢
    • 2021-07-27
    • 1970-01-01
    • 2010-09-18
    • 2023-03-17
    • 2016-11-19
    • 1970-01-01
    • 1970-01-01
    • 2012-04-12
    • 1970-01-01
    相关资源
    最近更新 更多