C++ 在CEF中注册自定义``backend://`方案不起作用

C++ 在CEF中注册自定义``backend://`方案不起作用,c++,post,url-scheme,chromium-embedded,postdata,C++,Post,Url Scheme,Chromium Embedded,Postdata,在我的 我为scheme后端://注册了一个自定义方案处理程序。一如 I(渲染过程和浏览器过程) AddCustomScheme: void registerCustomSchemes(CefRawPtr register) { 对于(auto&scheme:getCustomSchemes())/“后端”和“客户端” { 注册员->添加客户方案(方案, 正确/*是标准*/,, false/*是本地的*/,, false/*是隔离显示的*/, true/*是安全的*/,, true/*是否启用了

在我的

我为scheme
后端://
注册了一个自定义方案处理程序。一如 I(渲染过程和浏览器过程)
AddCustomScheme

void registerCustomSchemes(CefRawPtr register)
{
对于(auto&scheme:getCustomSchemes())/“后端”和“客户端”
{
注册员->添加客户方案(方案,
正确/*是标准*/,,
false/*是本地的*/,,
false/*是隔离显示的*/,
true/*是安全的*/,,
true/*是否启用了cors*/,
false/*是_csp_旁路*/);
}
}
客户端://
方案还安装了一个处理程序

当我不使用
client
backend
调用
AddCustomScheme
时。
后端://
处理程序可以工作(与
客户端
处理程序一样),但我没有收到任何post请求数据(我发送了一些二进制数据)

当我使用
AddCustomScheme
时,
client
backend
不再触发

如何设置自定义处理程序
后端
,使其接收post数据请求?我还尝试在
AddCustomHandler
中使用bools,但没有任何帮助

更新:解决方案 主机名中不要使用大写字母

CefRegisterSchemeHandlerFactory(“http”,“您的主机名”,新…)

您正在尝试跨源
XmlHttpRequest
(XHR)。您需要配置跨源资源共享(CORS)。查看
CefAddCrossOriginWhitelistEntry

WebKit
不会将
POST
数据传递给在非HTTP方案上执行的同步XHR请求。请参阅第三方/WebKit/Source/core/XMLHttpRequest.cpp中的
XMLHttpRequest::send()中的
AreMethodAndURLValidForSend()
检查

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

如果需要使用XHR
POST
请求,则应使用
HTTP
HTTPS
协议注册自定义处理程序。由于这是一个有意设计的
WebKit
设计功能,因此对于
CEF3

可能不会更改,我会帮助您,但我不会,因为您提出问题,获得答案,但没有在您的问题上标记答案。您是对的,我完全错过了这一点!对不起:-)谢谢。其他专业人士的答案呢?查阅了2013年的大量问题;-)非常感谢。对不起,我稍后再看这个问题,因为星期五是一个艰难的时刻。好的,我将尝试注册
http
方案。我认为它是“同步XHRs”,但我总是使用异步XHRs…,你是对的,我正在将它从“客户端://”发送到“后端://”。我会看看
http
是否有效。到目前为止,我想我已经试过了。让我们看看是否可以使用我添加的相应CefAddCrossOriginWhitelistEntry注册“客户端”和“http”。如何使用http协议准确注册:
CefRegisterSchemeHandlerFactory(“http”,“executionGraph”,new BackendSchemeHandlerFactory(“executionGraph”)?然后使用
CefAddCrossOriginWhitelistEntry(“客户端:/”、“http”、“”和true)我现在注册了CefRegisterSchemeHandlerFactory(“http”,“executionGraph”,新的BackendSchemeHandlerFactory(“executionGraph”)
和处理程序被触发(CEF不喜欢主机名中的大写字母)。但是,post数据在处理程序中不可用(
nullptr
)。。。这有点奇怪你救了我的命!我寻找了这么久。。。域名中没有大写字母。