我们有一个 Oracle APEX 应用程序托管在两个 EC2 实例上,带有 AWS 应用程序负载均衡器,并启用了“粘性会话”。 APEX 应用程序在 99% 的情况下工作正常,但是当进程尝试上传文件或调用该过程的其他几个地方时,我们会收到 403 Forbidden 消息。
我们有一个 Apache 2 httpd 服务器、独立运行的 ORDS 和 APEX。 全部最新版本;版本详情见最后。Apache 日志和 ORDS 活动日志中都没有任何 403 的日志消息。 我们对 Apache 进行了系统跟踪,但没有产生任何有用的结果。
我们已关闭负载平衡器,问题就消失了。 我们已在单独的 AWS 环境中复制了该问题。
在 Google DevTools 中,我们看到了这一点;请注意
wwv_flow.accept
端口 443 的“
Remote Address
”,以及“3.208.141.138
”的“Server
”awselb/2.0
上进行 ICANN 查找 会生成注册人名称:Amazon Data Services NoVa
我假设“awselb/2.0”的“服务器”值表示 Amazon Web Services Elastic Load Balancer 版本 2.0。因此负载均衡器似乎返回 403 错误和“403 Forbidden”网页。
我们向 Oracle 提交了票证,他们没有发现我们的 APEX 或 ORDS 设置有任何问题。
我们捕获了一个用于 Oracle 支持的 HTTP 存档 (HAR) 文件,以下是该捕获的请求和回复:
请求
3.208.141.138
回应
"request": {
"method": "POST",
"url": "https://c333.example.net/ords/wwv_flow.accept?p_context=app-builder/import/14656898533235",
"httpVersion": "http/2.0",
"headers": [
{
"name": ":authority",
"value": "c333.example.net"
},
{
"name": ":method",
"value": "POST"
},
...
]
软件版本
"response": {
"status": 403,
"statusText": "",
"httpVersion": "http/2.0",
"headers": [
{
"name": "content-length",
"value": "520"
},
{
"name": "content-type",
"value": "text/html"
},
{
"name": "date",
"value": "Mon, 16 Sep 2024 22:06:38 GMT"
},
{
"name": "server",
"value": "awselb/2.0"
}
],