Запретить шифрование (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, в котором говорится о том, как сделать это для целей кэширования.