#openssl #marklogic #sslv3
#openssl #marklogic #sslv3
Вопрос:
Я использую MarkLogic 8 и пытаюсь выполнить POST-запрос к серверу. Я могу подключиться через curl или с помощью POSTMan, однако с Markloigc это не удается. В аналогичном сообщении предполагалось, что это проблема с SNI, поскольку Markloigc использует OpenSSL. Я попытался включить эту опцию в запрос post, однако я все еще получаю ту же ошибку. Есть какие-нибудь идеи по решению этой проблемы? Смотрите фрагмент кода ниже:
xdmp:http-post($post_url,
<options xmlns="xdmp:http">
<data>{xdmp:quote($custom_json)}</data>
<headers>
<content-type>application/json</content-type>
<Host>{$host}</Host>
</headers>
<allow-sslv3>true</allow-sslv3>
</options>
)
Ответ №1:
Не похоже, что вы отправляете какие-либо учетные данные. Попробуйте что-то вроде этого:
xdmp:http-post(
$post_url,
<options xmlns="xdmp:http">
<data>{xdmp:quote($custom_json)}</data>
<headers>
<content-type>application/json</content-type>
<Host>{$host}</Host>
</headers>
<allow-sslv3>true</allow-sslv3>
<authentication method="digest">
<username>myUsername</username>
<password>myPassword</password>
</authentication>
</options>
)
Комментарии:
1. URL-адрес публикации содержит токен, который заменяет аутентификацию. Я пробовал следующее с OpenSSL sclient и смог подключиться, когда добавил параметр -servername. Например: я НЕ МОГУ подключиться при попытке: openssl s_client -connect <ip>: 443 Я МОГУ подключиться при попытке: openssl s_client -имя_сервера <host.org > -connect <ip>: 443 Вопрос в том, как мне передать параметр -servername в MarkLogic xdmp:http-post url?
Ответ №2:
Просто чтобы обновить этот поток, я протестировал тот же код в MarkLogic 9, и он работает. Я не уверен, что это комбинация Marklogic 8 и используемой им библиотеки OpenSSL.