You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle APEX接收非APEX页面AJAX请求获取Cookie报错如何解决?

问题原因

你遇到的ORA-06502错误核心是两个问题:

  1. 未判断目标Cookie是否存在,当请求没有携带LOGIN_USERNAME_COOKIE时,c.vals是空数组,直接访问下标1就会触发数值/值错误
  2. ORDS REST处理程序默认没有绑定APEX会话上下文,且AJAX请求默认未配置携带凭证,导致服务端无法读取请求携带的Cookie

你之前在SQL命令窗口执行正常,是因为SQL窗口的执行上下文已经继承了当前登录的APEX会话的Cookie信息,所以能正常读取到值。

修复步骤

1. 优化PL/SQL函数,增加异常和空值判断

避免Cookie不存在时的数组越界错误:

create or replace function test return varchar2
is
   c owa_cookie.cookie;
begin
   c := owa_cookie.get('LOGIN_USERNAME_COOKIE');
   -- 先判断Cookie值的数量是否大于0
   if c.num_vals >= 1 then
     return c.vals(1);
   else
     return 'COOKIE_NOT_FOUND';
   end if;
exception
   when others then
     return 'ERROR: ' || sqlerrm;
end;
/

2. 修改AJAX请求配置,强制携带Cookie

同域名下的请求也需要显式配置withCredentials,保证浏览器把Cookie带到REST端点:

$.ajax({
  url: "<你的REST处理程序地址>",
  xhrFields: {
    withCredentials: true
  },
  crossDomain: false
})

3. 配置REST服务的上下文权限

如果需要读取APEX会话相关的Cookie,需要在REST处理程序的源代码前增加APEX上下文初始化逻辑:

declare
  l_workspace_id number;
begin
  -- 替换为你的APEX工作区名称
  select workspace_id into l_workspace_id from apex_workspaces where workspace = 'YOUR_WORKSPACE_NAME';
  apex_util.set_security_group_id(l_workspace_id);
end;
/

同时确认你的REST模块的安全策略没有限制Cookie读取,暂时可以设置为「不检查特权」验证功能是否正常。

内容的提问来源于stack exchange,提问作者nick zoum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 18:18:03