[STM32U5] IOT_HTTP_WebServer源码中HTTP请求头的Bug?

[复制链接]
439|1
内核558 发表于 2025-9-10 02:43 | 显示全部楼层 |阅读模式

用B-U585I-IOT02A开发板,并基于IOT_HTTP_WebServer示例进行自己的演示扩展。我使用的STM32CubeIDE版本为1.9.0,并通过"STM32 Project"向导中的"Example Selector"创建了IOT_HTTP_WebServer项目。在IOT_HTTP_WebServer源码中发现了一个Bug。

当我添加新的内容类型及其对应的HTTP请求头时发现了这个问题。我按照IOT_HTTP_WebServer/Demonstration/User/WebServer/App/http/webserver_http_response.c文件中http_send_headers_response()函数的现有模式扩展了源码,但在Chrome开发者工具中查看HTTP响应时,这些请求头并未显示。

这个问题在未修改的源码中也能复现,例如通过Chrome开发者工具查看IOT_HTTP_WebServer应用发送的CSS文件的HTTP响应头时,会发现这些请求头实际上没有接收。

具体原因是http_send_response()向http_send_headers_response()传递参数时,有两个参数的顺序出现了错误:

static WebServer_StatusTypeDef http_send_response(uint32_t headers_id,
                                                  uint32_t socket,
                                                  char *headers_buff,
                                                  const char *body_buff,
                                                  uint32_t data_size)
{
  /* Send HTTP header response */
  if (http_send_headers_response(headers_id, socket, headers_buff, data_size) != WEBSERVER_OK)
  {
    return HTTP_ERROR;
  }

  /* Send HTTP body response */
  if (http_send(socket, (const char *)body_buff, data_size) != WEBSERVER_OK)
  {
    return HTTP_ERROR;
  }

  return WEBSERVER_OK;
}

/**
  * @brief  HTTP send headers responses data via socket
  * @param  socket       : connection socket
  * @param  headers_id   : specifies the header ID
  * @param  headers_buff : pointer to headers buffer
  * @param  data_size    : size of body web resources
  * @retval Web Server status
  */
static WebServer_StatusTypeDef http_send_headers_response(uint32_t socket,
                                                          uint32_t headers_id,
                                                          char *headers_buff,
                                                          uint32_t data_size)
{
...
}

probedog 发表于 2025-9-10 15:41 | 显示全部楼层
建议在修改后,建议对相关代码进行全面审查
您需要登录后才可以回帖 登录 | 注册

本版积分规则

50

主题

50

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部