Oracle Apex例外:未经授权的URL

时间:2017-07-20 19:56:07

标签: sql oracle oracle-apex

我有一个Oracle Apex应用程序,我正在尝试发出REST请求,但我收到错误未经授权的URL。

这是我的代码:

declare
  l_clob clob;
begin
  l_clob := APEX_WEB_SERVICE.make_rest_request(
    p_url         => 'http://oracle-base.com/webservices/add-numbers.php',
    p_http_method => 'GET',
    p_parm_name   => APEX_UTIL.string_to_table('p_int_1:p_int_2'),
    p_parm_value  => APEX_UTIL.string_to_table(1 || ':' || 2)
  ) ;   
   return l_clob;
end;

错误:

Unauthorized URL: http://oracle-base.com/webservices/add-numbers.php

Contact your application administrator.

enter image description here

有谁知道请问的原因是什么?

感谢。

1 个答案:

答案 0 :(得分:0)

您需要网络ACL

如果您使用的是Oracle Database 11g或更高版本,则需要ACL才能访问外部网络服务。 以下是创建ACL以允许MY_USER用户访问“oracle-base.com”的11g示例:

if (red < ctrl.threshold || green < ctrl.threshold || blue < ctrl.threshold)    {
  d[i + 0] = 0
  d[i + 1] = 0
  d[i + 2] = 0
} else {
  d[i + 0] = 255
  d[i + 1] = 255
  d[i + 2] = 255
}

相反,如果您使用的是12c:

CONN / AS SYSDBA
BEGIN
  DBMS_NETWORK_ACL_ADMIN.create_acl (
    acl          => 'oracle_base_acl.xml', 
    description  => 'An ACL for the oracle-base.com website',
    principal    => 'MY_USER',
    is_grant     => TRUE, 
    privilege    => 'connect',
    start_date   => SYSTIMESTAMP,
    end_date     => NULL);

  DBMS_NETWORK_ACL_ADMIN.assign_acl (
    acl         => 'oracle_base_acl.xml',
    host        => 'oracle-base.com', 
    lower_port  => 80,
    upper_port  => 80); 

  COMMIT;
END;
/

此致