0

您好,我们正在使用 IBM Commerce Sever 通过如下代码从一个视图移动到另一个视图。

protected void prepareResponse(){
...
String returnUrl = "www.example.com/aNewPage.jsp?aUrlParameter=123&anotherParameter=654"
...
StringBuffer sb = new StringBuffer(returnUrl);
sb.append("&storeId=").append(commandContext.getStoreId());
sb.append("&langId=-1");
responseProperties.put(ECConstants.EC_REDIRECTURL, sb.toString());
responseProperties.put(ECConstants.EC_VIEWTASKNAME, ECConstants.EC_GENERIC_REDIRECTVIEW);
}

我们最终的 url 是 www.example.com/aNewPage.jsp?krypto=ABCDF0LotsOfRandomCharacters 不幸的是,由于第 3 方集成,我们有 javascript 寻找未加密形式的 url 参数,当然它无法解密 krypto 参数。

这种行为是根据文档

将输入参数展平为 HttpRedirectView 的查询字符串

传递给重定向视图命令的所有输入参数都被展平
到 URL 重定向的查询字符串中。例如,假设输入
重定向视图命令包含以下属性:
URL = "我的视图?p1=v1&p2=v2";
ip1 = "iv1"; // 输入到原始控制器命令
ip2 = "iv2" ; // 输入到原始控制器命令
op1 = "ov1";
op2 = "ov2";
根据前面的输入参数,最终的 URL 是
MyView?p1=v1&p2=v2&ip1=iv1&ip2=iv2&op1=ov1&op2=ov2
注意,如果命令是使用 SSL,那么参数是加密的
最终 URL 显示为
MyView?krypto=encrypted_value_of“p1=v1&p2=v2&ip1=iv1&ip2=iv2&op1=ov1&op2=ov2”

现在的问题是:如何防止这些 url 参数被加密?

4

1 回答 1

0

加密的参数由 wc-server.xml 中的 NonEncryptedParameters 节点控制。将您希望以明文形式保留的 url 参数添加到该节点意味着它们不会被加密。

<NonEncryptedParameters display="false">
    <Parameter name="storeId"/>
    <Parameter name="langId"/>
    <Parameter name="catalogId"/>
    <Parameter name="categoryId"/>
    <Parameter name="productId"/>
</NonEncryptedParameters>

我在IBM 的论坛上找到了答案和一个链接,详细介绍了NonEncryptedParameters 节点的使用,该节点谈到了出于缓存目的这样做。

于 2009-08-20T09:00:18.253 回答