Регистрация пользовательской схемы « backend: // `не работает в CEF

В моем Приложение CEF

Я регистрирую пользовательский обработчик схемы для схемы backend://, Как сделано в пример sche_handler
я вызывать в каждом процессе (Rendere Process и Browser-Process)
AddCustomScheme :

void registerCustomSchemes(CefRawPtr<CefSchemeRegistrar> registrar)
{
for(auto& scheme : getCustomSchemes()) // "backend" and "client"{
registrar->AddCustomScheme(scheme,
true /* is standart*/,
false /* is local */,
false /* is display_isolated */,
true /* is secure */,
true /* is cors enabled*/,
false /* is_csp_bypassing*/);
}
}

client:// На схеме также установлен обработчик.

Когда я не звоню AddCustomScheme с обоими client а также backend, backend:// обработчик работает (а также client обработчик), но я не получаю никаких данных после запроса (я посылаю некоторые двоичные данные).

Когда я использую AddCustomScheme обработчики схемы для client а также backend
больше не срабатывает.

Как мне настроить пользовательский обработчик backend такой, что он получает почтовые запросы данных? Я также пытался поиграть с bools в AddCustomHandler что не помогло.

1

Решение

Вы пытаетесь перекрестного происхождения XmlHttpRequest (XHR). Вам необходимо настроить общий доступ к ресурсам (CORS). смотреть на CefAddCrossOriginWhitelistEntry,

WebKit не проходит POST данные к запросу на синхронные XHR, выполненные по не-HTTP схемам. Увидеть AreMethodAndURLValidForSend() проверяет в XMLHttpRequest::send() in third_party/WebKit/Source/core/XMLHttpRequest.cpp,

bool XMLHttpRequest::AreMethodAndURLValidForSend() {
return method_ != HTTPNames::GET && method_ != HTTPNames::HEAD &&
url_.ProtocolIsInHTTPFamily();
}

Если вам нужно использовать XHR POST запросы вы должны зарегистрировать свой пользовательский обработчик с помощью HTTP или же HTTPS протокол. Так как это намеренное WebKit конструктивная особенность скорее всего не изменилась за CEF3,

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]