mirror of
				https://github.com/NodeBB/NodeBB.git
				synced 2025-10-31 19:15:58 +01:00 
			
		
		
		
	Adds a `Service-Worker-Allowed` header on `assets/src/service-worker.js` URL and uses `scope` option during registration to ensure the service worker is correctly scoped to the entire forum and only the forum.
This commit is contained in:
		| @@ -788,7 +788,7 @@ app.cacheBuster = null; | |||||||
|  |  | ||||||
| 	function registerServiceWorker() { | 	function registerServiceWorker() { | ||||||
| 		if ('serviceWorker' in navigator) { | 		if ('serviceWorker' in navigator) { | ||||||
| 			navigator.serviceWorker.register(config.relative_path + '/assets/src/service-worker.js') | 			navigator.serviceWorker.register(config.relative_path + '/assets/src/service-worker.js', { scope: config.relative_path + '/' }) | ||||||
| 				.then(function () { | 				.then(function () { | ||||||
| 					console.info('ServiceWorker registration succeeded.'); | 					console.info('ServiceWorker registration succeeded.'); | ||||||
| 				}).catch(function (err) { | 				}).catch(function (err) { | ||||||
|   | |||||||
| @@ -1,6 +1,7 @@ | |||||||
| 'use strict'; | 'use strict'; | ||||||
|  |  | ||||||
| const path = require('path'); | const path = require('path'); | ||||||
|  | const nconf = require('nconf'); | ||||||
|  |  | ||||||
| module.exports = function (app, middleware, controllers) { | module.exports = function (app, middleware, controllers) { | ||||||
| 	app.get('/sitemap.xml', controllers.sitemap.render); | 	app.get('/sitemap.xml', controllers.sitemap.render); | ||||||
| @@ -11,7 +12,7 @@ module.exports = function (app, middleware, controllers) { | |||||||
| 	app.get('/manifest.webmanifest', controllers.manifest); | 	app.get('/manifest.webmanifest', controllers.manifest); | ||||||
| 	app.get('/css/previews/:theme', controllers.admin.themes.get); | 	app.get('/css/previews/:theme', controllers.admin.themes.get); | ||||||
| 	app.get('/osd.xml', controllers.osd.handle); | 	app.get('/osd.xml', controllers.osd.handle); | ||||||
| 	app.get('/service-worker.js', function (req, res) { | 	app.get('/assets/src/service-worker.js', function (req, res) { | ||||||
| 		res.status(200).type('application/javascript').sendFile(path.join(__dirname, '../../public/src/service-worker.js')); | 		res.status(200).type('application/javascript').set('Service-Worker-Allowed', nconf.get('relative_path') + '/').sendFile(path.join(__dirname, '../../public/src/service-worker.js')); | ||||||
| 	}); | 	}); | ||||||
| }; | }; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user