'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