QtWebEngine/Network: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
* Bulleted list item | |||
[[Category:Developing Qt:Qt WebEngine]] | [[Category:Developing Qt:Qt WebEngine]] | ||
Qt WebEngine uses the Chromium networking stack instead of Qt Network. This also means that the setup of proxies might differ. In general, Qt WebEngine should follow the 'least surprising route' and follow the proxy settings of Qt Network. | Qt WebEngine uses the Chromium networking stack instead of Qt Network. This also means that the setup of proxies might differ. In general, Qt WebEngine should follow the 'least surprising route' and follow the proxy settings of Qt Network. | ||
== Proxy Resolution == | |||
=== Proxy resolution in Qt Network === | === Proxy resolution in Qt Network === | ||
Line 12: | Line 14: | ||
# [http://doc.qt.io/qt-5/qnetworkaccessmanager.html#setProxyFactory QNetworkAccessManager::setProxyFactory] | # [http://doc.qt.io/qt-5/qnetworkaccessmanager.html#setProxyFactory QNetworkAccessManager::setProxyFactory] | ||
# [http://doc.qt.io/qt-5/qnetworkproxy.html#setApplicationProxy QNetworkProxy::setApplicationProxy] | # [http://doc.qt.io/qt-5/qnetworkproxy.html#setApplicationProxy QNetworkProxy::setApplicationProxy] | ||
# [http://doc.qt.io/qt-5/qnetworkproxyfactory.html#setUseSystemConfiguration QNetworkProxyFactory::setUseSystemConfiguration] | |||
# [http://doc.qt.io/qt-5/qnetworkproxyfactory.html#setApplicationProxyFactory QNetworkProxyFactory::setApplicationProxyFactory] | # [http://doc.qt.io/qt-5/qnetworkproxyfactory.html#setApplicationProxyFactory QNetworkProxyFactory::setApplicationProxyFactory] | ||
Line 18: | Line 21: | ||
=== Proxy resolution in Qt WebEngine === | === Proxy resolution in Qt WebEngine === | ||
Qt WebEngine checks QNetworkProxy::applicationProxy once. If there is a proxy set, it is used for Chromium connections too (see [https://code.woboq.org/qt5/qtwebengine/src/core/proxy_config_service_qt.cpp.html#_ZN20ProxyConfigServiceQt20GetLatestProxyConfigEPN3net11ProxyConfigE proxy_config_service_qt.cpp]). If | Qt WebEngine checks QNetworkProxy::applicationProxy once. If there is a proxy set, it is used for Chromium connections too (see [https://code.woboq.org/qt5/qtwebengine/src/core/proxy_config_service_qt.cpp.html#_ZN20ProxyConfigServiceQt20GetLatestProxyConfigEPN3net11ProxyConfigE proxy_config_service_qt.cpp]). | ||
Then [http://doc.qt.io/qt-5/qnetworkproxyfactory.html#applicationProxyFactory QNetworkProxyFactory::applicationProxyFactory] is checked (since Qt 5.8). If it is enabled, Chromium tries to auto-detect the system proxy settings. Before Qt 5.8, this was always the case. | |||
''Note:'' The code path used to auto-detect proxy settings in the network differ, depending on whether --single-process is used. See https://codereview.qt-project.org/#/c/115567/ for details. | ''Note:'' The code path used to auto-detect proxy settings in the network differ, depending on whether --single-process is used. See https://codereview.qt-project.org/#/c/115567/ for details. |
Revision as of 08:23, 17 November 2016
- Bulleted list item
Qt WebEngine uses the Chromium networking stack instead of Qt Network. This also means that the setup of proxies might differ. In general, Qt WebEngine should follow the 'least surprising route' and follow the proxy settings of Qt Network.
Proxy Resolution
Proxy resolution in Qt Network
Qt Network has a various levels to set proxies for client connections (evaluated in this order):
- QAbstractSocket::setProxy
- QNetworkAccessManager::setProxy
- QNetworkAccessManager::setProxyFactory
- QNetworkProxy::setApplicationProxy
- QNetworkProxyFactory::setUseSystemConfiguration
- QNetworkProxyFactory::setApplicationProxyFactory
Since Qt 5.6, there's a default QNetworkProxyFactory::applicationProxyFactory that uses the system settings (see -system-proxies / -no-system-proxies configure flag).
Proxy resolution in Qt WebEngine
Qt WebEngine checks QNetworkProxy::applicationProxy once. If there is a proxy set, it is used for Chromium connections too (see proxy_config_service_qt.cpp). Then QNetworkProxyFactory::applicationProxyFactory is checked (since Qt 5.8). If it is enabled, Chromium tries to auto-detect the system proxy settings. Before Qt 5.8, this was always the case.
Note: The code path used to auto-detect proxy settings in the network differ, depending on whether --single-process is used. See https://codereview.qt-project.org/#/c/115567/ for details.
Proxy authentication
To authenticate proxies, connect to the QWebEnginePage::proxyAuthenticationRequired or WebEngineView::authenticationDialogRequested signal.
Links
http://doc.qt.io/qt-5/qtwebengine-overview.html#proxy-support