File tree Expand file tree Collapse file tree 3 files changed +41
-0
lines changed
Expand file tree Collapse file tree 3 files changed +41
-0
lines changed Original file line number Diff line number Diff line change @@ -87,6 +87,21 @@ app.on('session-created', (session) => {
8787 window . onBeforeRequest ( details , callback ) ;
8888 } ) ;
8989
90+ session . webRequest . onBeforeSendHeaders ( ( details , callback ) => {
91+ const url = details . url . toLowerCase ( ) ;
92+ if ( url . startsWith ( 'devtools:' ) ) {
93+ return callback ( { } ) ;
94+ }
95+
96+ const webContents = details . webContents ;
97+ const window = AbstractWindow . getWindowByWebContents ( webContents ) ;
98+ if ( ! webContents || ! window ) {
99+ return callback ( { } ) ;
100+ }
101+
102+ window . onBeforeSendHeaders ( details , callback ) ;
103+ } ) ;
104+
90105 session . webRequest . onHeadersReceived ( ( details , callback ) => {
91106 const window = AbstractWindow . getWindowByWebContents ( details . webContents ) ;
92107 if ( ! window ) {
Original file line number Diff line number Diff line change @@ -346,6 +346,15 @@ class AbstractWindow {
346346 callback ( { } ) ;
347347 }
348348
349+ /**
350+ * @param {Electron.OnBeforeSendHeadersListenerDetails } details
351+ * @param {(response: Electron.BeforeSendResponse) => void } callback
352+ */
353+ onBeforeSendHeaders ( details , callback ) {
354+ // to be overridden
355+ callback ( { } ) ;
356+ }
357+
349358 /**
350359 * @param {Electron.OnHeadersReceivedListenerDetails } details
351360 * @param {(response: Electron.HeadersReceivedResponse) => void } callback
Original file line number Diff line number Diff line change @@ -131,6 +131,23 @@ class ProjectRunningWindow extends AbtractWindow {
131131 super . onBeforeRequest ( details , callback ) ;
132132 }
133133
134+ onBeforeSendHeaders ( details , callback ) {
135+ const parsed = new URL ( details . url ) ;
136+
137+ if ( WEB_PROTOCOLS . includes ( parsed . protocol ) ) {
138+ // Some third-party APIs (eg. YouTube embeds) require a non-empty referer header.
139+ // The website being contacted already receives "turbowarp-desktop/x.y.z" in the user-agent so this isn't
140+ // revealing any metadata that they couldn't already have access to.
141+ return callback ( {
142+ requestHeaders : {
143+ 'referer' : 'https://docs.turbowarp.org/desktop/referer'
144+ }
145+ } ) ;
146+ }
147+
148+ callback ( { } ) ;
149+ }
150+
134151 onHeadersReceived ( details , callback ) {
135152 if (
136153 settings . bypassCORS &&
You can’t perform that action at this time.
0 commit comments