当我尝试在iot ESP8266 Web服务器上调用put/post请求时,出现了上述错误。该资源未在响应中设置'Access-Control-Allow-Origin' header,因此无法从源'http://192.168.100.2:8100'访问,响应的HTTP状态码为404。为了解决这个问题,我尝试添加以下代码,但是没有任何作用。
在函数内部
server.on("/", HTTP_OPTIONS, []() {
server.sendHeader("Access-Control-Allow-Origin", "*");
server.sendHeader("Allow", "HEAD,GET,PUT,POST,DELETE,OPTIONS");
server.sendHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT");
server.sendHeader("Access-Control-Allow-Headers", "X-Requested-With, X-HTTP-Method-Override, Content-Type, Cache-Control, Accept");
});
server.on("/testPost", HTTP_POST, testCors);
server.on("/testPut", HTTP_PUT, testCors);
在函数内部
void testCors()
{
Serial.print("HTTP Method: ");
Serial.println(server.method());
server.sendHeader("Access-Control-Allow-Origin", "*");
server.sendHeader("Allow", "HEAD,GET,PUT,POST,DELETE,OPTIONS");
server.sendHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT");
server.sendHeader("Access-Control-Allow-Headers", "X-Requested-With, X-HTTP-Method-Override, Content-Type, Cache-Control, Accept");
server.send(200, "text/plain", "");
}
谢谢
server.on("/")
。对我来说,看起来你只配置了处理程序以处理/
终端节点。你是否检查过函数是否被调用?如果没有,也许你需要将路径配置为某种通配符,比如/*
。 - Paul SamsothanotFound
中实现它。 - Sachin