我有一个异步可插入协议处理程序,用于主要模仿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来调用我的协议...