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

Azure环境下Arduino执行PHP脚本的连接异常问题排查

嘿,我之前也碰到过类似Azure Web App和Arduino通信的坑,咱们一步步拆解排查:

排查Azure侧可能的限制

1. 检查IP访问限制

登录Azure门户找到你的Web App,进入网络 > 访问限制:

  • 看看是否设置了仅允许特定IP访问的规则,如果有,Arduino设备的公网IP大概率没在允许列表里,要么添加对应IP,要么暂时关闭限制做测试(测试完记得恢复)。
  • 另外可以去安全 > Microsoft Defender for Cloud查看安全日志,有没有Arduino请求被拦截的记录。

2. 检查HTTPS强制跳转

Azure Web App默认是强制HTTPS的,如果你的Arduino代码里还在用HTTP请求,会被直接重定向或拦截:

  • 确保代码里的请求地址是https://你的Azure域名/insert.php,并且使用支持HTTPS的库(比如WiFiClientSecure代替WiFiClient)。
  • 测试阶段可以先在Web App的配置 > 通用设置里临时关闭“HTTPS仅”选项,验证是不是这个问题。

3. 查看Azure请求日志

进入Web App的监控 > 日志流,然后让Arduino发送请求,实时查看日志:

  • 如果看到403状态码,基本是IP限制或安全规则拦截;如果是400,说明请求格式有问题;如果连请求记录都没有,那可能是网络层面就没通。
  • 也可以下载详细访问日志(日志 > 应用服务日志),里面会包含请求的来源IP、User-Agent、状态码等细节,定位问题更精准。
检查Arduino代码细节

1. 完善请求头信息

很多服务器会拒绝没有明确User-Agent的请求,在你的请求代码里加上:

client.println("User-Agent: Arduino/1.0");

如果是POST请求,还要确保Content-Length设置正确,参数编码符合标准(比如URL编码特殊字符)。

2. 测试简化版代码

写一个极简的测试代码排除复杂逻辑的干扰,比如:

#include <WiFi.h>
#include <WiFiClientSecure.h>

const char* ssid = "你的WiFi名称";
const char* password = "你的WiFi密码";
const char* host = "你的Azure域名";
const int httpsPort = 443;

WiFiClientSecure client;

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  // 测试阶段跳过证书验证(正式环境建议添加对应证书)
  client.setInsecure();
  
  if (!client.connect(host, httpsPort)) {
    Serial.println("连接Azure失败!");
    return;
  }

  // 发送带参数的GET请求(和你手动测试的参数一致)
  String url = "/insert.php?param=testData";
  client.print(String("GET ") + url + " HTTP/1.1\r\n" +
               "Host: " + host + "\r\n" +
               "User-Agent: Arduino/1.0\r\n" +
               "Connection: close\r\n\r\n");

  // 读取响应
  while (client.connected()) {
    String line = client.readStringUntil('\n');
    if (line == "\r") break;
  }
  Serial.println("服务器响应:");
  Serial.println(client.readString());
  client.stop();
}

void loop() {
  delay(5000);
}

通过串口监视器看输出,是连接失败还是有错误响应,针对性调整。

3. 核对PHP环境兼容性

虽然手动调用正常,但Azure的PHP版本可能和你之前的虚拟主机不同,进入Web App的配置 > 通用设置查看PHP版本,确保代码里没有依赖旧版本PHP的语法或函数。

内容的提问来源于stack exchange,提问作者Aaron Strickland

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:36:35