使用 ngixx 的 Oracle UTL_HTTP 错误请求

Posted

技术标签:

【中文标题】使用 ngixx 的 Oracle UTL_HTTP 错误请求【英文标题】:Oracle UTL_HTTP bad request with ngixx 【发布时间】:2021-07-26 19:22:29 【问题描述】:

我有一个 ngnix 作为下一个条目的反向代理:

 location /jrri/ 
    proxy_pass http://xxx.xxx.xxx.xxx:8080/;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  

如果我从网络浏览器或 curl 调用 https://www.mysite.com.ar:443/jrri,我会得到 200 ok 的结果。

curl --head https://www.mysite.com.ar:443/jrri/
HTTP/1.1 200
Server: nginx/1.20.1
Date: Mon, 26 Jul 2021 19:00:54 GMT
Content-Type: text/html;charset=UTF-8
Connection: keep-alive

但如果我从 oracle 程序调用,我会收到错误代码 400 - Bad request

  DECLARE
    l_text VARCHAR2(32767);
    req utl_http.req;
  BEGIN
    UTL_HTTP.SET_WALLET('');
     l_text := UTL_HTTP.REQUEST('https://www.mysite.com.ar:443/jrri/');
    dbms_output.put_line(l_text);
  END;

回复:

<html>
<head><title>400 Bad Request</title></head>
<body>
<center><h1>400 Bad Request</h1></center>
<hr><center>nginx/1.20.1</center>
</body>
</html>

我的Oracle版本是自治数据库,怎么了?

问候

【问题讨论】:

【参考方案1】:

我发现了问题,如果您将端口写入请求中,服务器会返回 bada 请求。 如果我写 UTL_HTTP.REQUEST('https://www.mysite.com.ar/jrri/');没有端口它工作!

【讨论】:

以上是关于使用 ngixx 的 Oracle UTL_HTTP 错误请求的主要内容,如果未能解决你的问题,请参考以下文章

oracle的数据怎么发送到接口

Oracle游标使用总结

如何使用oracle的DBMS

oracle使用工具

oracle日期转换函数怎么调优

如何使用oracle提供的SQL