You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从ESP8266WebServer获取包含域名的完整URL地址

ESP8266WebServer库没有专门的「获取域名」方法,但你需要的域名本质是HTTP请求携带的Host头字段,库本身已经提供了对应的获取接口:

具体实现方式
  • 直接调用内置的hostHeader()方法,就能拿到完整的Host值,默认包含域名+端口(如果请求带非80/443端口的话会一起返回)
  • 仅需要纯域名的话,对返回的字符串做一次冒号切割即可

示例代码

#include <ESP8266WebServer.h>

ESP8266WebServer server(80);

void handleRequest() {
  // 拿Host(域名+可选端口)
  String host = server.hostHeader();
  // 拿URI路径
  String uri = server.uri();

  // 剔除端口,仅保留纯域名
  int colonIndex = host.indexOf(':');
  if (colonIndex >= 0) {
    host = host.substring(0, colonIndex);
  }

  server.send(200, "text/plain", "域名:" + host + "\n路径:" + uri);
}

void setup() {
  // 此处省略WiFi连接初始化代码
  server.on("/index", handleRequest);
  server.begin();
}

void loop() {
  server.handleClient();
}

老版本兼容说明

如果你用的ESP8266核心库版本比较旧,没有hostHeader()方法,替换成server.header("Host")就能实现完全一样的效果。

内容的提问来源于stack exchange,提问作者will.mendil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 07:36:03