我试图在TEdgeBrowser中禁用CORS,并通过使用ICoreWebView2EnvironmentOptions找到了许多解决方案,因为TEdgeBrowser是由WebView2实现的。
在微软的文件中,示例代码似乎用于VisualC++,C++ Builder不适用于:
auto options = Microsoft::WRL::Make<CoreWebView2ExperimentalEnvironmentOptions>();下面是我在C++ Builder 11中尝试过的代码:
_di_ICoreWebView2EnvironmentOptions *m_WV2_EnvOpt = new _di_ICoreWebView2EnvironmentOptions();
m_WV2EnvOpt->put_AdditionalBrowserArguments(L"--disable-web-security");它将在m_WV2EnvOpt->put_AdditionalBrowserArguments()中失败。
我不知道,也许我走错路了。有人能帮我吗?
发布于 2022-01-19 19:48:46
_di_ICoreWebView2EnvironmentOptions是DelphiInterface保存ICoreWebView2EnvironmentOptions*指针的类型类型。您不对new本身使用DelphiInterface,而是对实现接口的类进行new,例如:
class TCoreWebView2EnvironmentOptionsImpl : public ICoreWebView2EnvironmentOptions
{
// implement IUnknown and ICoreWebView2EnvironmentOptions as needed...
};
_di_ICoreWebView2EnvironmentOptions m_WV2_EnvOpt = new TCoreWebView2EnvironmentOptionsImpl;但是,WRL对象不是这样使用的。
在本例中,WebView2库将ICoreWebView2EnvironmentOptions公开为COM对象,因此可以使用CoCreateInstance()实例化它( WebView2库的CLSID为26D34152-879F-4065-BEA2-3DAA2CFADFB8,ICoreWebView2EnvironmentOptions的IID为2FDE08A8-1E9A-4766-8C05-95A9CEB9D1C5),例如:
_di_ICoreWebView2EnvironmentOptions m_WV2_EnvOpt;
CoCreateInstance(LIBID_WebView2, NULL, CLSCTX_INPROC_SERVER, IID_ICoreWebView2EnvironmentOptions, (LPVOID*)&m_WV2_EnvOpt);但是,在这种情况下,这对您没有帮助,因为您必须在创建ICoreWebView2EnvironmentOptions对象时提供所创建的WebView2对象,而且AFAIK TEdgeBrowser根本不允许您这样做。
您可以尝试在创建WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS对象之前设置WebView2环境变量,但是要设置AFAIK 选项。
https://stackoverflow.com/questions/70768030
复制相似问题