用户可以通过代理进行连接。一些使用系统范围的代理设置,另一些使用浏览器范围的代理。
例如,在 Windows 上,您可以拥有系统代理设置以及单独的 Firefox 或 Chrome 代理设置。因此依赖系统代理设置是不可靠的。
唯一合乎逻辑的解决方案是使用加载我的插件的浏览器所使用的任何代理设置。如果 Firefox 正在加载我的插件并且它有一些代理设置,我的插件也应该使用这些设置进行连接。我需要我的插件来下载插件加载页面的 SSL 证书(用于进一步验证等)。
在 NPAPI 中有什么方法可以做到这一点,或者我必须使用 Windows WinInet 或 WinHTTP 之类的 API,或者用于 Linux 和 Mac 的 OpenSSL?如果我必须这样做,那么我怎样才能让我的插件使用主机浏览器正在使用的任何代理设置?我正在检查 NPN_GetValueForURL,但我不认为它具有良好的兼容性和良好的浏览器互操作性。
谢谢大家!
最佳答案
我很确定 NPN_GetURLNotify()将使用浏览器的代理设置。如果不这样做,那就太疯狂了。
更新
如果您正在编写基于 NPAPI 的插件,则需要使用 NPN_Get/Post 函数来执行 HTTP 请求。那会用到主机的代理设置,cookies等等,这些功能就是因为这个原因而存在的;我不知道您为什么要使用 Wininet 或自己动手。
查看 about:config,Firefox 似乎将代理设置存储在 network.proxy.* 中。您可以通过 Preferences Service 以编程方式访问这些设置.我想您可以将 Wininet 配置为表现相同,但您仍然遇到 cookie 问题。
关于c++ - 确定 NPAPI 中的浏览器代理设置以下载页面 SSL 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6180762/