Oracle apex 如何在包含反斜杠的URL上使用APEX_UTIL.PREPARE_URL?

Oracle apex 如何在包含反斜杠的URL上使用APEX_UTIL.PREPARE_URL?,oracle-apex,oracle-apex-18.2,Oracle Apex,Oracle Apex 18.2,我试图使用为需要校验和的页面生成一个顶点URL,并试图将目标页面上的页面项设置为包含特殊字符的值。对于这个问题,假设我传递的唯一特殊字符是逗号,尽管我的问题似乎适用于所有特殊字符 根据,包含逗号的项值需要用反斜杠括起来。因此,当我建立我的URL时,我会得到如下结果: f?p=112:50:session::::P50_PAGE_ITEM:\123,abc\: 然后我通过APEX\u UTIL.PREPARE\u URL将此URL传递给 APEX_UTIL.PREPARE_URL('f?p=11

我试图使用为需要校验和的页面生成一个顶点URL,并试图将目标页面上的页面项设置为包含特殊字符的值。对于这个问题,假设我传递的唯一特殊字符是逗号,尽管我的问题似乎适用于所有特殊字符

根据,包含逗号的项值需要用反斜杠括起来。因此,当我建立我的URL时,我会得到如下结果:

f?p=112:50:session::::P50_PAGE_ITEM:\123,abc\:
然后我通过APEX\u UTIL.PREPARE\u URL将此URL传递给

APEX_UTIL.PREPARE_URL('f?p=112:50:session::::P50_PAGE_ITEM:\123,abc\:')
当我尝试跟踪返回的链接时,出现以下错误:

对请求、清除缓存、参数名称和参数值(…)计算的校验和与传递到show过程的校验和不匹配

如果我尝试传递一个不包含逗号的值,并且删除了反斜杠,则传递该值时不会出现问题


如何获取包含反斜杠的URL的有效校验和,以便传递包含逗号(和其他特殊字符)的值?

APEX\u UTIL.PREPARE\u URL
应该可以很好地处理反斜杠。包含结果URL的区域可能正在转义特殊字符,从而导致校验和不匹配

要测试
APEX_UTIL.PREPARE_URL
的实际输出,请尝试在PL/SQL动态区域中输出URL。例如:

DECLARE
  l_url VARCHAR2(200) := 'f?p=112:50:session::::P50_PAGE_ITEM:\123,abc\:';
BEGIN
  htp.p('<a href="'||apex_util.prepare_url(l_url)||'">page 52</a>');
END;
声明
l_url VARCHAR2(200):=“f?p=112:50:会话::::P50_PAGE_ITEM:\123,abc\:”;
开始
htp.p(“”);
结束;

您确定这与反斜杠有关吗?我尝试了以下操作:使用项目P1_NEW创建页面,并将页面访问保护设置为“参数必须具有校验和”。创建一个以pl/sql dyn contect作为源和源的区域:``声明l_url VARCHAR2(200):='f?p=&APP_ID.:1:&APP_SESSION.::NO::P1_NEW:H\ELLO';开始htp.p(“”);结束;`这将生成具有有效校验和的链接。您在哪里生成链接(同一个应用程序、其他应用程序、pl/sql会话?),您的安全设置是什么(应用程序/页面?),您用于生成url的代码是什么?请提供尽可能多的信息,以帮助他人诊断您的问题。@KoenLostrie您是对的;这不是反斜杠。我正在用一个树区域进行测试,它似乎可以在链接中转义特殊字符(包括反斜杠),即使“转义特殊字符”设置为“否”。URL作为一个标签很好,并且在通过PL/SQL区域输出时也可以,如您的示例所示。我建议您使用APEX_PAGE.get_URL来代替它-使用它更简单,因为您只需要提供所需的参数-(注意,您仍然需要斜杠“\”)@JeffreyKemp我同意,但为了这个问题,我想说明的是,get_url()不是问题的一部分。