В моем Приложение 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
что не помогло.
Вы пытаетесь перекрестного происхождения 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
,
Других решений пока нет …