ERR_CONNECTION_REFUSED when communicating with my ESP8266 over WiFi

from the following code, I uploaded it to my esp8266 and it's all good and okay when I communicate with it with my laptop while my laptop is connected to my network with a LAN cable.
The problem is when I try to communicate with the ESP with my lap or phone over Wi-Fi I get ERR_CONNECTION_REFUSED though they rarely work and communicate, I tried another phone another router, and did a factory reset to my router, and all the same.
I know that there is an option in the router that is called AP Isolation and it's been checked and it's disabled.
My question is: What could possibly be the reason for this error (ERR_CONNECTION_REFUSED) when I communicate with ESP8266 with that code?
if someone could help me I would be pleased as I am stuck in this situation.
The ESP code (same as the link):

    #include <ESP8266WiFi.h>
    
    const char* ssid = "*****";
    const char* password = "*******";
    
    WiFiServer server(80);
    
    
    void setup()
    {
      Serial.begin(115200);
      Serial.println();
    
      Serial.printf("Connecting to %s ", ssid);
      WiFi.begin(ssid, password);
      while (WiFi.status() != WL_CONNECTED)
      {
        delay(500);
        Serial.print(".");
      }
      Serial.println(" connected");
    
      server.begin();
      Serial.printf("Web server started, open %s in a web browser\n", WiFi.localIP().toString().c_str());
    }
    
    
    // prepare a web page to be sent to a client (web browser)
    String prepareHtmlPage()
    {
      String htmlPage =
         String("HTTP/1.1 200 OK\r\n") +
                "Content-Type: text/html\r\n" +
                "Connection: close\r\n" +  // the connection will be closed after completion of the response
                "Refresh: 5\r\n" +  // refresh the page automatically every 5 sec
                "\r\n" +
                "<!DOCTYPE HTML>" +
                "<html>" +
                "Analog input:  " + String(analogRead(A0)) +
                "</html>" +
                "\r\n";
      return htmlPage;
    }
    
    
    void loop()
    {
      WiFiClient client = server.available();
      // wait for a client (web browser) to connect
      if (client)
      {
        Serial.println("\n[Client connected]");
        while (client.connected())
        {
          // read line by line what the client (web browser) is requesting
          if (client.available())
          {
            String line = client.readStringUntil('\r');
            Serial.print(line);
            // wait for end of client's request, that is marked with an empty line
            if (line.length() == 1 && line[0] == '\n')
            {
              client.println(prepareHtmlPage());
              break;
            }
          }
        }
        delay(1); // give the web browser time to receive the data
    
        // close the connection:
        client.stop();
        Serial.println("[Client disconnected]");
      }
    }

The ESP comes with a very good library for a webserver.

See the examples ESP8266Webserver / HelloServer.

Please check if it is working like it comes from the IDE.

No need to write the HTTP header manually with the right library!