ESP8266, Webserver, POST, Password

Hallo Leute,

ich habe ein Problem mit meinem ESP. Es läuft ein Webserver aus der Library ESP8266WebServer.h auf dem ESP. Dieser zeigt eine HTML-Seite mit Bootstrap an. Darauf habe ich ein Formular welches per Post Daten an den Webserver übermitteln soll. Grundsätzlich ist die Funktion auch gegeben.

In dem Moment in dem ein mit typ Password in das Form aufgenommen wird und das Passwort vom Webserver mithilfe von .arg[“password”] abgefragt wird. Funktioniert es nicht mehr. Der Aufruf aus dem Browser kommt dann gar nicht mehr am ESP an und der Browser meldet einen Verbindungsabbruch zum Server.

Ich habe mittlerweile einige Zeit versucht das Problem zu lokalisieren aber ich kann es nicht eingrenzen. Sobald ich in der Methode im ESP das Passwort Argument nicht mehr abfrage gibt es keine Probleme mehr. Ich benötige das Passwort aber.

Der vollstädingkeit halber einmal die Methode die aufgerufen wird, wenn das Form submitted wird.

/* Invoked from webserver POST form */
void handleMqttCredentialChange()
{
  DEBUG_PRINTLN("Handle MQTT Credential change from Webserver");

  if(!_webServer.hasArg("mqttBrokerIPAdress")){
    DEBUG_PRINTLN("IP Adress is missing");
    _webServer.send(400, "text/plain", "The data you provided was not correct");
    return;
  }

  if(!_webServer.hasArg("mqttBrokerPort")){
    DEBUG_PRINTLN("Port is missing");
    _webServer.send(400, "text/plain", "The data you provided was not correct");
    return;
  }

  if(!_webServer.hasArg("mqttBrokerUsername")){
    DEBUG_PRINTLN("Username is missing");
   _webServer.send(400, "text/plain", "The data you provided was not correct");
    return;}

  //if(!_webServer.hasArg("MqttBrokerPassword")){
  //  DEBUG_PRINTLN("Password is missing");
  //  _webServer.send(400, "text/plain", "The data you provided was not correct");
  //  return;
  //  }

  // if( !_webServer.hasArg("mqttBrokerIPAdress") ||
  //     !_webServer.hasArg("mqttBrokerPort") ||
  //     !_webServer.hasArg("mqttBrokerUsername") ||
  //     !_webServer.hasArg("MqttBrokerPassword"))
  // {
  //   DEBUG_PRINTLN("At least one argument is missing");
  //   _webServer.send(400, "text/plain", "The data you provided was not correct");
  //   return;
  // }

  // REVIEW: Test the configuration change from Browser
  _config.mqttHost = _config.mqttHost;
  strlcpy(_config.mqttHost, _webServer.arg("mqttBrokerIPAdresse").c_str(), _webServer.arg("mqttBrokerIPAdress").length());
  _config.mqttPort = atoi(_webServer.arg("mqttBrokerPort").c_str());
  strlcpy(_config.mqttHost, _webServer.arg("mqttBrokerUsername").c_str(), _webServer.arg("mqttBrokerUsername").length());
  strlcpy(_config.mqttHost, _webServer.arg("mqttBrokerPassword").c_str(), _webServer.arg("mqttBrokerPassword").length());

  Config::Serialize(CONFIG_FILE, _config);
  DEBUG_PRINTLN("Saving config to filesystem");

  //_webServer.sendHeader("Location", "/",true);   //Redirect to our html web page  
  _webServer.send(200, "text/plain","Data updated");
}

Und die entsprechende Zeile für den Webserver

void setupWebServer()
{
  _webServer.serveStatic("/", SPIFFS, "/index.html");
  _webServer.serveStatic("/style.css", SPIFFS, "/style.css");
  _webServer.serveStatic("/bootstrap.min.css", SPIFFS, "/bootstrap.min.css");
  _webServer.serveStatic("/bootstrap.bundle.min.js", SPIFFS, "/bootstrap.bundle.min.js");
  _webServer.serveStatic("/jquery-3.5.0.min.js", SPIFFS, "/jquery-3.5.0.min.js");
  _webServer.serveStatic("/bootstrap-colorpicker.min.css", SPIFFS, "/bootstrap-colorpicker.min.css");
  _webServer.serveStatic("/bootstrap-colorpicker.min.js", SPIFFS, "/bootstrap-colorpicker.min.js");

  _webServer.on("/setMqttData",HTTP_POST, handleMqttCredentialChange);

  // handle unknown requests
  _webServer.onNotFound(pageNotFound);
  
  _webServer.begin();
  DEBUG_PRINTLN("Webserver setup");
}

Vielen Dank

Gruß
Jan