48 # Do Not Track feature |
48 # Do Not Track feature |
49 if self.__doNotTrack: |
49 if self.__doNotTrack: |
50 info.setHttpHeader(b"DNT", b"1") |
50 info.setHttpHeader(b"DNT", b"1") |
51 info.setHttpHeader(b"X-Do-Not-Track", b"1") |
51 info.setHttpHeader(b"X-Do-Not-Track", b"1") |
52 |
52 |
53 # Send referer header? |
53 # Send referrer header? |
54 if not self.__sendReferer and info.requestUrl().host() not in \ |
54 if info.requestUrl().host() not in \ |
55 Preferences.getWebBrowser("SendRefererWhitelist"): |
55 Preferences.getWebBrowser("SendRefererWhitelist"): |
56 info.setHttpHeader(b"Referer", b"") |
56 self.__setRefererHeader(info) |
57 |
57 |
58 # User Agents header |
58 # User Agents header |
59 userAgent = WebBrowserPage.userAgentForUrl(info.requestUrl()) |
59 userAgent = WebBrowserPage.userAgentForUrl(info.requestUrl()) |
60 info.setHttpHeader(b"User-Agent", userAgent.encode()) |
60 info.setHttpHeader(b"User-Agent", userAgent.encode()) |
61 |
61 |
62 for interceptor in self.__interceptors: |
62 for interceptor in self.__interceptors: |
63 interceptor.interceptRequest(info) |
63 interceptor.interceptRequest(info) |
|
64 |
|
65 def __setRefererHeader(self, info): |
|
66 """ |
|
67 Private method to set the 'Referer' header depending on the configured |
|
68 rule set. |
|
69 |
|
70 @param info URL request information |
|
71 @type QWebEngineUrlRequestInfo |
|
72 """ |
|
73 # TODO: extend referrer handling like that: |
|
74 # 1. SendReferer: |
|
75 # 0 = never |
|
76 # 1 = only on click (NavigationTypeLink) |
|
77 # 2 = always (default) |
|
78 # 2. RefererTrimmingPolicy: |
|
79 # 0 = send full URL (no trimming) (default) |
|
80 # 1 = send the URL without its query string |
|
81 # 2 = only send the origin (ensure trailing /) |
|
82 # 3. RefererDefaultPolicy: |
|
83 # set the default referrer policy (which can be overriden by |
|
84 # the site) |
|
85 # 0 = no-referrer |
|
86 # 1 = same-origin |
|
87 # 2 = strict-origin-when-cross-origin |
|
88 # 3 = no-referrer-when-downgrade (default) |
|
89 # see: https://wiki.mozilla.org/Security/Referrer |
|
90 # see: https://www.w3.org/TR/referrer-policy/ |
|
91 if not self.__sendReferer: |
|
92 info.setHttpHeader(b"Referer", b"") |
64 |
93 |
65 def installUrlInterceptor(self, interceptor): |
94 def installUrlInterceptor(self, interceptor): |
66 """ |
95 """ |
67 Public method to install an URL interceptor. |
96 Public method to install an URL interceptor. |
68 |
97 |