Мы работаем с MobileFirst 6.3, сервером mobilefirst, работающим на RHEL linux. Мы подключаемся к SAP и используем Discovery для создания кода адаптера и используем эти сгенерированные вызовы адаптера, за исключением пользовательской аутентификации. Если мы создадим ссылку на SAP, это приведет к HTTP-запросу POST, но адаптер всегда генерирует один HTTP-запрос HEAD перед этим фактическим запросом. У меня были жалобы на это из серверной части SAP (не то чтобы я лично думал, что они причинят большой вред). Я также подтвердил это при проверке других вещей с помощью wireshark. Я могу предположить, что они связаны с какой-то проверкой подключения адаптерами, но не смог найти никаких доказательств этого. Поиск похожих вопросов также является сложной задачей, поскольку строки HTTP и HEAD часто встречаются в URL-адресах и HTML-коде.
- Может ли кто-нибудь проверить мое предположение о цели этих запросов HEAD?
- Есть ли документация по ним?
- Можно ли их каким-либо образом настроить (и в этом случае, каковы будут недостатки отказа)?
Определения адаптера:
..
<connectivity>
<connectionPolicy xsi:type="nwgateway:NWGatewayHTTPConnectionPolicyType">
<protocol>HTTP</protocol>
<domain>our.complex.host</domain>
<port>10084</port>
<connectionTimeoutInMilliseconds>30000</connectionTimeoutInMilliseconds>
<socketTimeoutInMilliseconds>30000</socketTimeoutInMilliseconds>
<serviceRootUrl>/sap/opu/odata/sap/OUR_CUSTOM_REQS/</serviceRootUrl>
<!-- Following properties used by adapter's key manager for choosing specific certificate from key store
<sslCertificateAlias></sslCertificateAlias>
<sslCertificatePassword></sslCertificatePassword>-->
<maxConcurrentConnectionsPerNode>50</maxConcurrentConnectionsPerNode>
</connectionPolicy>
</connectivity>
..
<procedure name="createOurCustomObjectHeader" securityTest="OurCustomSecurityTest" connectAs="endUser"/>
..
Код адаптера:
function createOurCustomObjectHeader(content) {
var request = {
CollectionName: "OurCustomObjectHeaderSet",
Content : content
};
return WL.Server.createNWBusinessObject(request);
}
Код проверки безопасности:
<customSecurityTest name="OurCustomSecurityTest">
<test realm="wl_antiXSRFRealm" />
<!-- test realm="wl_authenticityRealm"/ -->
<test realm="wl_remoteDisableRealm" />
<test realm="OurCustomRealm" isInternalUserID="true" />
<test realm="wl_deviceNoProvisioningRealm" isInternalDeviceID ="true" />
</customSecurityTest>