如何获取 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 服务器的主机名和端口?
如何从 Elastic Beanstalk 中的 Spring Boot 应用程序中获取客户端主机名和/或客户端 IP 地址?