我一直在尝试让Oracle调用REST API。在设置和运行过程中,我们遇到了一个问题,我们的代码生成了ORA-53203:安全违规。在隔离问题的过程中,我们设置了一个过程来测试连接,这也生成了相同的错误。
我们正在使用Oracle 12 c,并且我们已经为我们正在测试的主机设置了ACE/ACL条目,用于“连接”和“解析”权限。
create or replace procedure showTitleTag ( i_url in varchar2 )
AS
l_httpreq UTL_HTTP.req;
l_httpresp UTL_HTTP.resp;
l_text varchar2(32767);
l_response CLOB;
l_title varchar2(32767);
BEGIN
l_httpreq := UTL_HTTP.begin_request(i_url);
l_httpresp := UTL_HTTP.get_response(l_httpreq);
BEGIN
LOOP
UTL_HTTP.read_text(l_httpresp, l_text, 32766);
l_response := l_response || l_text;
END LOOP;
EXCEPTION
WHEN UTL_HTTP.end_of_body THEN
UTL_HTTP.end_response(l_httpresp);
END;
l_title := REGEXP_REPLACE(l_response, '.*<title> ?(.+) ?</title>.*', '\1', 1, 1, 'in');
DBMS_OUTPUT.put_line(l_title);
EXCEPTION
WHEN OTHERS THEN
UTL_HTTP.end_response(l_httpresp);
RAISE;
END;
字符串
这段代码,应该给予我们网页标题标签的内容(我们使用“http://www.redhat.com“作为我们的测试URL)。相反,我们收到以下错误:
ORA-29273: HTTP request failed
ORA-53203: security violation
ORA-06512: at "APPS.SHOWTITLETAG", line 29
ORA-06512: at line 1
型
1条答案
按热度按时间zf9nrax11#
1.你需要确保
the related access control list (ACL) assigned and the right privilege has been granted to your target host.
1.如果第一个没有问题,
(
select a.lower_port, a.upper_port from dba_network_acls a where a.host like '%i_url%'
)是否为
URL
的端口定义了间隔,并包含目标主机的端口。