json-server cannot access via local IP

2020-02-22 07:52发布

问题:

I'm using npm json-server from here. It used to work great for my needs: run a server on my PC and do GET requests to local IP (192.168.1.XX). I reinstalled it and now I can do requests only to localhost or 127.0.0.1. Can't do requests to local IP (cmd ipconfig) anymore. I'm getting this error:

As @fvu mentioned here

this means that the server software is configured to listen on the localhost interface only. This is a configuration item and to avoid exposing a potentially unsecure server many server programs come preconfigured to listen on localhost only.

So is there a way to access this server via local IP as long as json-server doesn't have some extra parameters to enable/disable it?

回答1:

I found the solution for this issue:

json-server --host 192.168.1.XXX my_file.json

Using this command, server is deployed on my local IP, and Windows asks for a firewall exception.

Another solution is to switch to .NET server - another free simple fake server where I can setup local IP as endpoint.

All it needs to:

  1. install .NET
  2. use CMD commands:

       git clone https://github.com/ttu/dotnet-fake-json-server.git
       cd dotnet-fake-json-server/FakeServer
       dotnet run [--file] [--urls]
    
        #like so in my case:
        dotnet run --file_data.json --urls http://192.168.1.192:57602
    


回答2:

Localhost if you will use the same device:

json-server --watch filename.json

the localhost IP is 127.0.0.1 so, you can access this filename.json by 2 ways, either by

  1. http://localhost:8000/filename.json
  2. http://127.0.0.1:8000/filename.json

In case you want to access the localhost from another computer/mobile device, place the IPV4 address of your computer

json-server --host 192.168.0.xx file.json

You can also assign a port number of your own using this command:

json-server --host 192.168.0.xx file.json --port 4000

then run it on any device connected with the same network using

  1. http://192.168.0.xx:4000/file.json

Finally if you did not understood where did i take this host IP from, Go to command prompt > config /all and look for IPv4 address, copy paste that address to this URL, remember that devices should be on the same network to access this IP.



回答3:

Another option that worked for me:

json-server -H 0.0.0.0 -p 3000 -w db.json

Note: You need to enable port 3000 for TCP/UDP through firewall though. Something like this

sudo ufw allow 3000


回答4:

Here's another method that worked for me. If you start json-server using your local LAN IP (e.g. 192.168.1.45), you can access the server using an IP address (but not localhost for some reason). For example...

json-server [insert your JSON file] --host [insert your LAN IP]

Hope that helps!