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

Oracle Apex如何将Checksum错误页调整为404 Not Found页面

Oracle Apex 无效URL跳转404而非校验错误的实现方案

方案1:Web代理/服务器层前置拦截(推荐)

  • 适配场景:使用Nginx、Apache或者Oracle HTTP Server(OHS)作为Apex前置代理时,该方案性能最高,不会将无效请求转发到Apex后端
  • 实现逻辑:预先定义合法的Apex URL格式规则,所有不符合规则的请求直接返回404状态
  • Nginx配置示例(需根据你的实际部署路径调整正则规则):
# 匹配标准Apex应用URL格式,示例规则适配/ords/[应用标识]/[页面ID]/[会话ID]的标准格式
location ~ ^/ords/[^/]+/[0-9]+/[0-9]+(/.*)?$ {
    proxy_pass http://你的Apex后端服务地址;
    proxy_set_header Host $host;
}
# 所有不符合格式的ords相关请求直接返回404
location ~ ^/ords/ {
    return 404;
}

方案2:Apex应用层自定义错误处理

  • 适配场景:无权限修改前置服务器配置时,可直接在Apex内部实现逻辑
  • 操作步骤:
    1. 进入对应Apex应用的共享组件 → 「应用定义属性」→ 「错误处理」页面
    2. 新建自定义错误处理函数,示例PL/SQL代码如下:
FUNCTION custom_error_handler (p_error IN apex_error.t_error)
RETURN apex_error.t_error_result
IS
    l_result apex_error.t_error_result;
BEGIN
    l_result := apex_error.init_error_result(p_error => p_error);
    -- 匹配校验和错误的特征:错误码为-20001,报错信息包含checksum关键字
    IF p_error.sqlcode = -20001 AND INSTR(LOWER(p_error.message), 'checksum') > 0 THEN
        -- 方式1:跳转至你提前创建的应用内404静态页面(页面号可自定义)
        owa_util.redirect_url(p_url => apex_page.get_url(p_page => 404), p_reset_htp => TRUE);
        -- 方式2:直接返回标准404状态码,不需要跳转页面可使用该配置
        -- owa_util.status_line(nstatus => 404, creason => 'Not Found', bclose_header => TRUE);
        apex_application.stop_apex_engine;
    END IF;
    RETURN l_result;
END custom_error_handler;
  1. 将错误处理函数配置保存后即可生效

注意事项

  • 不要为了规避该问题关闭全局「会话状态保护」配置,否则会产生越权访问、参数篡改的安全风险
  • 自定义404页面需要单独设置为公开访问权限,避免未登录用户访问时触发登录跳转逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 15:15:04