nodemcu esp8266中的CORS问题

nodemcu esp8266中的CORS问题,cors,ionic3,webserver,esp8266,nodemcu,Cors,Ionic3,Webserver,Esp8266,Nodemcu,对飞行前请求的响应未通过访问控制检查:否 “Access Control Allow Origin”标头出现在请求的服务器上 资源。因此,不允许使用源“” 通道响应的HTTP状态代码为404 Iam在尝试调用iot ESP8266 Web服务器中的put/post请求时出现上述错误 为了解决这个问题,我尝试添加以下代码。但什么都没用 server.on("/", HTTP_OPTIONS, []() { server.sendHeader("Access-Control-Allow-Or

对飞行前请求的响应未通过访问控制检查:否 “Access Control Allow Origin”标头出现在请求的服务器上 资源。因此,不允许使用源“” 通道响应的HTTP状态代码为404

Iam在尝试调用iot ESP8266 Web服务器中的put/post请求时出现上述错误

为了解决这个问题,我尝试添加以下代码。但什么都没用

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", "");
}

谢谢

这是通配符路径的解决方案,对我来说很有效

void config_rest_server_routing()
{
    server.on("/", HTTP_GET, []() {
        server.send(200, "text/html",
                    "Welcome to the ESP8266 REST Web Server");
    });
    server.on("/leds", HTTP_GET, get_leds);
    server.on("/leds", HTTP_POST, testCors);
    server.on("/leds", HTTP_PUT, testCors);

    server.onNotFound(handleNotFound);
}
void handleNotFound()
{
    if (server.method() == HTTP_OPTIONS)
    {
        server.sendHeader("Access-Control-Allow-Origin", "*");
        server.sendHeader("Access-Control-Max-Age", "10000");
        server.sendHeader("Access-Control-Allow-Methods", "PUT,POST,GET,OPTIONS");
        server.sendHeader("Access-Control-Allow-Headers", "*");
        server.send(204);
    }
    else
    {
        server.send(404, "text/plain", "");
    }
}

只需在每个响应之前添加这一行:


server.sendHeader(“访问控制允许来源”,“*”)

我以前从未使用过这个服务器,但有一件事对我来说很突出,
server.on(“/”
。在我看来,这似乎只是配置处理程序来处理
/
端点。是否检查了该函数是否被调用。如果没有,可能需要将路径配置为某种通配符,例如
/*
。是的,但我没有找到在esp8266 Web服务器中添加通配符路径的方法。但我能够将其放入
未找到的
中。