使用URL中的重复路径调用异步可插入协议处理程序Start()

时间:2017-11-13 16:40:42

标签: c++ angularjs winapi protocols pluggableprotocol

我有一个异步可插入协议处理程序,用于主要模仿file://协议的应用程序,但会限制对应用程序中配置的沙箱的请求。

应用程序使用C#中的WebBrowser控件托管AngularJS webapp。当Angular的路由器使用协议请求视图模板文件时,我收到了对我的IInternetProtocolInfo :: CombineUrl()实现的请求,其中包含以下baseUrl和relativeUrl:

wchar_t buf[2048] = { 0 };
DWORD ret = 2048;

UrlCombine(pwzBaseUrl, pwzRelativeUrl, buf, &ret, 0);

// pwzResult is myProtocol:///webApp/app/views/start.html here
StringCchCopy(pwzResult, ret + 1, buf);

*pcchResult = ret + 1;
return S_OK;

我的代码是:

szUrl: myProtocol:///webApp/app/views/start.html/webApp/app/views/start.html

这导致使用以下url调用IInternetProtocol :: Start():

{{1}}

正如我们所看到的,文件的路径已经重复,我不知道为什么。似乎只是AngularJS的视图模板文件遇到了这个问题;其他相对路径工作得非常好(例如从bower_components / node_modules中提取其他脚本文件)。

如果它是重复的话,我想避免不得不破解它将路径分成两半。必须有一个原因,为什么urlmon用这个奇怪的URL来调用我的协议...

0 个答案:

没有答案