Запретить шифрование (Krypto) параметров URL-адресов в IBM Commerce Server 6

Привет, мы используем 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, к сожалению, из-за интеграции с третьей стороной у нас есть javascript, который ищет незашифрованную форму параметров url и, разумеется, не может расшифровать параметр krypto.

Это поведение согласно документации:

Сглаживание входных параметров в строке запроса для HttpRedirectView

Все входные параметры, которые передаются команде вида перенаправления, сведены
в строку запроса для перенаправления URL. Например, предположим, что вход
Для просмотра перенаправления команда содержит следующие свойства:
URL = "MyView? P1=v1&p2=v2";
ip1 = "iv1"; // ввод в оригинальную команду контроллера
ip2 = "iv2"; // ввод в исходную команду контроллера
op1 = "ov1";
op2 = "ov2";
Основываясь на предыдущих входных параметрах, окончательный URL
MyView? P1=v1&p2=v2& IP1=iv1& ф2=iv2& OP1 = OV1 & OP2 = OV2
Обратите внимание, что если команда использует SSL, то параметры зашифрованы
и окончательный URL выглядит как
MyView? Крипто =encrypted_value_of "p1=v1&p2=v2 и ip1=iv1& ф2=iv2&op1 = OV1 &op2 = OV2"

Теперь вопрос: как я могу предотвратить шифрование этих параметров URL?

1 ответ

Решение

Зашифрованные параметры контролируются узлом NonEncryptedParameters в wc-server.xml. Добавление параметров url, которые вы хотите оставить открытым текстом в этом узле, означает, что они не будут зашифрованы.

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

Я нашел ответ на форуме IBM и ссылку, объясняющую использование узла NonEncryptedParameters, в котором говорится о том, как сделать это для целей кэширования.

Другие вопросы по тегам