AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 827588
Accepted
phobic
phobic
Asked: 2017-01-21 08:34:08 +0800 CST2017-01-21 08:34:08 +0800 CST 2017-01-21 08:34:08 +0800 CST

Apache2 mod_proxy 包装 HTTP 标头而不是转发它

  • 772

通过 apache 代理访问 oracle apex 服务器时,我偶尔会收到以下 HTTP 包作为来自服务器的响应:

Connection:Keep-Alive
Date:Fri, 20 Jan 2017 16:00:24 GMT
Keep-Alive:timeout=5, max=100
Server:Apache/2.4.6 () PHP/5.4.16
Transfer-Encoding:chunked

0
HTTP/1.1 200 OK
Server: Oracle XML DB/Oracle Database
Content-Type: text/html; charset=utf-8
Content-Length: 33388

ACTUAL HTML PAGE FROM APEX

我不知道0从哪里来。尽管代理似乎将从 APEX 获得的完整 HTTP 响应(包括 HTTP 标头)作为 HTTP 正文包装到另一个 HTTP 包中:

<Apache HTTP PACKAGE>
    <Apache HTTP HEADER>
        Connection:Keep-Alive
        Date:Fri, 20 Jan 2017 16:00:24 GMT
        Keep-Alive:timeout=5, max=100
        Server:Apache/2.4.6 () PHP/5.4.16
        Transfer-Encoding:chunked

    </Apache HTTP HEADER>
    <Apache HTTP BODY>
        0
        <APEX HTTP PACKAGE>
                HTTP/1.1 200 OK
                Server: Oracle XML DB/Oracle Database
                Content-Type: text/html; charset=utf-8
                Content-Length: 33388

                ACTUAL HTML PAGE FROM APEX
        </APEX HTTP PACKAGE>
    </Apache HTTP BODY>
</Apache HTTP PACKAGE>

相反,代理应该简单地将 HTTP 包转发给客户端。这样客户端接收到的 HTTP 包就好像它来自 APEX,而不知道它是由代理转发的。这在 30 次中有 29 次按预期工作,但有时它的行为如上所述。这是代理中的错误吗?您能否建议一个可能的解决方法?

mod-proxy apache2 oracle-application-server
  • 1 1 个回答
  • 2348 Views

1 个回答

  • Voted
  1. Best Answer
    Patrick Mevzek
    2017-03-24T15:54:47+08:002017-03-24T15:54:47+08:00

    这不是包装,这是由于transfer-encoding: chunked标题。见https://en.wikipedia.org/wiki/Chunked_transfer_encoding

    0 是最终块的信号。从上面的页面:

    每个块以它嵌入的数据的八位字节数开始,以 ASCII 中的十六进制数表示,后跟可选参数(块扩展)和终止 CRLF 序列,然后是块数据。该块由 CRLF 终止。

    和

    终止块是常规块,但其长度为零。紧随其后的是预告片,它由一个(可能为空的)实体标头字段序列组成。通常,此类标头字段将在消息的标头中发送;但是,在处理完整个消息实体后确定它们可能更有效。在这种情况下,在预告片中发送这些标头很有用。

    试试SetEnv proxy-nokeepalive 1你的 Apache mod_proxy 配置。或者试试

    SetEnv proxy-sendcl 1

    SetEnv proxy-sendchunked 0

    有关解释,请参见http://httpd.apache.org/docs/2.4/mod/mod_proxy.html#request-bodies 。

    • 0

相关问题

  • mod_rewrite 不添加 REDIRECT_URL 环境变量

  • Apache 2.2.3 代理到 Tomcat 5.5 上的 mod_proxy 返回错误 502 Bad Gateway

  • mod_proxy apache 加载错误 - ap_timeout_parameter_parse

  • 启动 httpd 时 mod_proxy 加载错误

  • 如何将 Apache 配置为使用 HTTPS 进行外部访问,而使用 HTTP 进行内部访问?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve