'What value should I give the scope attribute in my manifest.json file when serving a Progressive Web App from a local IP address with a port number?
I am having a problem with web app manifest scope on my local Node JS test server. I cannot get the correct scope because the port number on the IP address gets in the way. I am accessing my server with the following address:
https://192.168.0.101:2468/
When I use Chrome dev tools to look at my manifest, under the Application tab it shows the url of the manifest file to be: :2468/manifest.json
but :2468
is not a directory in my root folder.
I keep all my files in the root directory, including the server.js
, the manifest.json
, and the index, called my-app.html
_ website-directory
|_ server.js
|_ manifest.json
|_ my-app.html
In my manifest file I have:
{
"scope": "./",
"start_url": "my-app.html"
}
Everything works perfectly when I upload the code to my Github Pages site here: working example. I think the problem is coming from the :2468
behind my IP address. I do not have this problem with a fully qualified domain name like I have with Github Pages.
If I try to put the port number into the manifest's scope like so:
"scope": "./:2468/",
"start_url": "my-app.html"
It breaks the scope of my manifest and I get this warning: Manifest: property 'scope' ignored. Start url should be within scope of scope URL.
Which makes perfect sense because :2468
is not a folder in my directory. It's just something Chrome decided to attach to the url of my manifest file.
How do I resolve the scope of my manifest file to ignore the port number? Why does Chrome dev tools indicate that my manifest is in the :2468
directory that does not exist?
The reason this is a problem is because my web app will not open in app mode, with a full screen window and splash screen. It only opens in a browser with a url bar and doesn't seem to be using the app manifest at all.
UPDATE: 11/05/17
By using the URL https://192.168.0.101:2468/my-app.html
I can access my web app without dev tools showing :2468/
in my manifest url. My app does install to both the home screen and the app drawer, but it only opens in a browser rather than a full screen app with a splash screen. I get no warnings about the manifest scope, and my service worker registers and runs perfectly. I am beginning to think that progressive web apps cannot be installed from an IP address, but only fully qualified domain names. Could this be the problem?
Solution 1:[1]
You're correct, Progressive Web Apps must be installed at a somewhat proper URL because they require that scope to operate properly. Without the scope being enforced, a rogue service worker could gain access to sites that it shouldn't.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Nathan Heffley |