如何获取 ORDS RESTful 服务的主机名和请求标头?

Posted

技术标签:

【中文标题】如何获取 ORDS RESTful 服务的主机名和请求标头?【英文标题】:How to get host name and request headers for ORDS RESTful Services? 【发布时间】:2022-01-15 16:30:47 【问题描述】:

我有带有 Apex 19.2 的 Oracle 18c 数据库

我创建了一个 ORDS RESTful 服务来接收来自另一个应用程序的一些 POST 请求。

我需要获取有关发送到我的 RESTful 服务的请求的一些详细信息。

所以我使用这里记录的隐式参数:

https://docs.oracle.com/en/database/oracle/oracle-rest-data-services/18.3/aelig/implicit-parameters.html#GUID-E7716042-B012-4E44-9F4C-F8D3A1EDE01C

例如::body:content_type...

declare
        RequestBodyReceived blob;
begin
        RequestBodyReceived := :body ;
        insert into SomeTable (RequestBody) values (RequestBodyReceived);
        :status_code := 201;
end;

这很好,但我找不到有关该请求的其他信息。主要是sender host,headers等...

请问有人知道如何获取发件人主机和请求标头吗?

谢谢。

【问题讨论】:

owa_util.get_cgi_env 为您提供了很多信息,请查看我的答案here @KoenLostrie 感谢您的回复。您的回答似乎提供了有关我的服务器的信息。我要查找的是有关将请求发送到我的 ORDS 服务的远程服务器的信息 该示例确实显示了有关请求本身的信息,但我相信 owa_util 包可以获取所有标头信息。使用 owa_util.print_cgi_env 找出最初可用的标头信息,然后挑选您需要的标头信息。蒂姆霍尔对此有很好的blog。 【参考方案1】:

使用以下代码作为端点源来检查所有可用的 CGI 变量。

begin
    for i in 1..nvl(owa.num_cgi_vars, 0) loop
        htp.p(owa.cgi_var_name(i) || ': ' || owa.cgi_var_val(i));
    end loop;
end;

前段时间在网上找到的,不记得在哪里了。

【讨论】:

以上是关于如何获取 ORDS RESTful 服务的主机名和请求标头?的主要内容,如果未能解决你的问题,请参考以下文章

如何获取部署 Java 适配器的 IBM MobileFirst 服务器的主机名和端口?

AIX如何获取主机名

如何从 Elastic Beanstalk 中的 Spring Boot 应用程序中获取客户端主机名和/或客户端 IP 地址?

如何覆盖访问主机名和端口的架构注册表主机

将路径参数值获取到 ORDS prehook

获取本地主机名和 IP 地址的 C++ Windows 函数调用