Проблема с установкой нескольких файлов cookie в ответе веб -сервера ESP32 ⇐ C++
-
Anonymous
Проблема с установкой нескольких файлов cookie в ответе веб -сервера ESP32
void handleLogin(AsyncWebServerRequest *request)
{
if (request->hasParam("username", true) && request->hasParam("password", true))
{
String username = request->getParam("username", true)->value();
String password = request->getParam("password", true)->value();
String role = "";
if (username == admin.username && password == admin.password)
{
role = admin.role;
}
else if (username == operatorUser.username && password == operatorUser.password)
{
role = operatorUser.role;
}
if (role != "")
{
String sessionId = generateSessionID();
sessions[sessionId] = {role, millis()};
// Create a JSON response
DynamicJsonDocument jsonDoc(256);
jsonDoc["message"] = "welcome";
jsonDoc["type"] = "success";
jsonDoc["redirect"] = "/";
String jsonStr;
serializeJson(jsonDoc, jsonStr);
// Create response object and add cookies
AsyncWebServerResponse *response = request->beginResponse(200, "application/json", jsonStr);
String expires = generateExpirationDate(SESSION_TIMEOUT);
response->addHeader("Set-Cookie", "ESPSESSIONID=" + sessionId + "; Path=/; HttpOnly; Expires=" + expires);
response->addHeader("Set-Cookie", "UserRole=" + role + "; Path=/; Expires=" + expires);
request->send(response); // Send response with cookies included
return;
}
}
}< /code>
< /div>
< /div>
< /p>
Я сталкиваюсь Браузер, даже когда я переупорядочивался заголовки Set-Cookie. Первое печенье постоянно игнорируется. Чтобы устранить устранение неполадок, я попытался сделать следующее: < /p>
Удал атрибут httponly. Куки для хранения приложений; Применяется только второй cookie. .
Несмотря на эти усилия, проблема сохраняется. < /li>
< /ul>
Подробнее здесь: https://stackoverflow.com/questions/794 ... r-response
void handleLogin(AsyncWebServerRequest *request)
{
if (request->hasParam("username", true) && request->hasParam("password", true))
{
String username = request->getParam("username", true)->value();
String password = request->getParam("password", true)->value();
String role = "";
if (username == admin.username && password == admin.password)
{
role = admin.role;
}
else if (username == operatorUser.username && password == operatorUser.password)
{
role = operatorUser.role;
}
if (role != "")
{
String sessionId = generateSessionID();
sessions[sessionId] = {role, millis()};
// Create a JSON response
DynamicJsonDocument jsonDoc(256);
jsonDoc["message"] = "welcome";
jsonDoc["type"] = "success";
jsonDoc["redirect"] = "/";
String jsonStr;
serializeJson(jsonDoc, jsonStr);
// Create response object and add cookies
AsyncWebServerResponse *response = request->beginResponse(200, "application/json", jsonStr);
String expires = generateExpirationDate(SESSION_TIMEOUT);
response->addHeader("Set-Cookie", "ESPSESSIONID=" + sessionId + "; Path=/; HttpOnly; Expires=" + expires);
response->addHeader("Set-Cookie", "UserRole=" + role + "; Path=/; Expires=" + expires);
request->send(response); // Send response with cookies included
return;
}
}
}< /code>
< /div>
< /div>
< /p>
Я сталкиваюсь Браузер, даже когда я переупорядочивался заголовки Set-Cookie. Первое печенье постоянно игнорируется. Чтобы устранить устранение неполадок, я попытался сделать следующее: < /p>
Удал атрибут httponly. Куки для хранения приложений; Применяется только второй cookie. .
Несмотря на эти усилия, проблема сохраняется. < /li>
< /ul>
Подробнее здесь: https://stackoverflow.com/questions/794 ... r-response
Мобильная версия